fork(2) download
  1. <?php
  2.  
  3.  
  4. $text = "Такая,знаете ли,мура получается с этим программированием но поначалу всё вроде шло хорошо!Даже замечательно! Но ведь в какой-то момент всегда начинаются проблемы, вы понимаете?А в этот раз они начались тогда,когда дошёл сначала до массивов;затем было сложно с циклами и массивами управляться сразу,но вполне ещё терпимо; потом вроде бы разобрался а думаете - это легко для гуманитария? Для гуманитария, может быть, и легко но для меня - нет. Мне как-то проще траллить технарей,чем стать на их уровень в программировании. У меня шырокий кругозор и шикарная жызненная позиция:непротивление насилию злом,но это, как ни странно, не помогает освоить программирование. Всё это весьма удручает,а также выбивает из колеи. А выбитый из колеи гуманитарий способен затралить любого,даже уравновешенного технаря-программиста на языке PHP. Это координально меняет ситуацию, описанную сдесь. Если же я зделаю всё так, как должно быть зделано, то все останутся целы.";
  5. $bigRegexp = "/координально|сдесь|[^а-яё]здела[лнoюет]{1,2}|[а-яёa-z]\\sа(\\s?|,|...| \\-)|[а-яёa-z]\\sно(\\s?|,|...| \\-)|[,\\.!\\?:;][^\\s]|(ж|ш)ы/ui";
  6. $possibleErrors = array (
  7. 0 => array ( "pattern" => "/.{3,5}координально.{3,5}/ui",
  8. "message" => "- Ошибка в слове \"кардинально\"."
  9. ),
  10. 1 => array ( "pattern" => "/.{3,5}сдесь.{3,5}/ui",
  11. "message" => "- Не \"сдесь\", а \"здесь\"."
  12. ),
  13. 2 => array ( "pattern" => "/.{3,5}[^а-яё]здела[лнoюет]{1,2}.{3,5}/ui",
  14. "message" => "- Приставки \"з\" нет в русском языке."
  15. ),
  16. 3 => array ( "pattern" => "/.{3,5}[а-яёa-z]\\sа(\\s?|,|...| \\-).{3,5}/u",
  17. "message" => "- Пропущена запятая перед союзом \"а\"."
  18. ),
  19. 4 => array ( "pattern" => "/.{3,5}[а-яёa-z]\\sно(\\s?|,|...| \\-).{3,5}/u",
  20. "message" => "- Пропущена запятая перед союзом \"но\"."
  21. ),
  22. 5 => array ( "pattern" => "/.{3,5}[,\\.!\\?:;][^\\s].{3,5}/ui",
  23. "message" => "- Пропущен пробел после знака препинания."
  24. ),
  25. 6 => array ( "pattern" => "/.{3,5}(ж|ш)ы.{3,5}/ui" ,
  26. "message" => "- \"Жи-Ши\" пиши с \"и\"!"
  27. )
  28. );
  29. $regexpClean = array(
  30. '/\\,/' => ', ',
  31. '/\\;/' => '; ',
  32. '/\\!/' => '! ',
  33. '/\\?/' => '? ',
  34. '/\\:/' => ': ',
  35. '/жы/ui' => 'жи',
  36. '/шы/ui' => 'ши',
  37. '/координально/ui' => 'кардинально',
  38. '/сдесь/ui' => 'здесь',
  39. '/зделал/ui' => 'сделал',
  40. '/зделаю/ui' => 'сделаю',
  41. '/зделано/ui' => 'сделано',
  42. '/зделать/ui' => 'сделать',
  43. '/ а /u' => ', а ',
  44. '/ а, /u' => ', а, ',
  45. '/ а \\-/u' => ', а \\-',
  46. '/ а\\.\\.\\./u' => ', а...',
  47. '/ но /u' => ', но ',
  48. '/ но, /u' => ', но, ',
  49. '/ но \\-/u' => ', но \\-',
  50. '/ но\\.\\.\\./u' => ', но...',
  51. '/,\\s?,/u' => ',',
  52. '/;,/u' => ';',
  53. '/:,/u' => ':',
  54. '/\\s\\s/ui' => ' '
  55. );
  56. $possibleErrorsCount = count($possibleErrors); /*Считаем количество регулярных выражений в массиве*/
  57.  
  58. if (preg_match_all($bigRegexp, $text, $allMatches)) {
  59.  
  60. foreach ($possibleErrors as $cleanArrays => $patternsAndMessages) { /*Цикл для поиска ошибок с помощью отдельных регулярок (ключей) в массиве и вывода соответствующих регуляркам правил (значений в массиве)*/
  61.  
  62. if (preg_match_all($patternsAndMessages['pattern'], $text, $matches)) { /*Достаём из массива регулярку, подставляем её в функцию, проверяем найденные ошибки в тексте $text на соответствие*/
  63. $message = $patternsAndMessages['message']; /*Выводим соответствующее правило из массива (содержание), чтобы вывести его затем в echo*/
  64. $cleanMatches = $matches[0]; /*Упрощаем получившийся массив с ошибками для возможности последующего вывода ошибок*/
  65.  
  66. foreach ($cleanMatches as $key => $value) { /*Цикл для извлечения ошибок из массива и вывода их в echo*/
  67. echo "\nНайденная ошибка:\n";
  68. echo "...{$value}... {$message}\n";
  69. }
  70. }
  71. }
  72. } else {
  73. echo "Ошибок в тексте не найдено.\n";
  74. echo "\nОригинальный текст:\n{$text}\n";
  75. }
  76.  
  77. if (preg_match_all($bigRegexp, $text)) {
  78. foreach ($regexpClean as $regexp => $correct) {/*Цикл для преобразования массива с отдельными регулярками в ключи и значения*/
  79. $text = preg_replace($regexp, $correct, $text); /*Переменная с текстом, в котором с помощью preg_replace подставляются отдельные регулярки и соответствующие им заменяемые варианты правильного текста; в итоге переменная меняется при прохождении цикла, поэтому итоговый вывод исправленного текста мы делаем за пределами этого цикла*/
  80. }
  81. echo "\nИсправленный текст:\n{$text}\n";
  82. }
  83.  
  84. ?>
Success #stdin #stdout 0.04s 52480KB
stdin
Standard input is empty
stdout
Найденная ошибка:
... Это координально меня... - Ошибка в слове "кардинально".

Найденная ошибка:
...нную сдесь. Есл... - Не "сдесь", а "здесь".

Найденная ошибка:
... же я зделаю всё ... - Приставки "з" нет в русском языке.

Найденная ошибка:
... быть зделано, то... - Приставки "з" нет в русском языке.

Найденная ошибка:
...брался а думае... - Пропущена запятая перед союзом "а".

Найденная ошибка:
...ванием но понач... - Пропущена запятая перед союзом "но".

Найденная ошибка:
... легко но для м... - Пропущена запятая перед союзом "но".

Найденная ошибка:
...Такая,знаете... - Пропущен пробел после знака препинания.

Найденная ошибка:
... ли,мура п... - Пропущен пробел после знака препинания.

Найденная ошибка:
...орошо!Даже з... - Пропущен пробел после знака препинания.

Найденная ошибка:
...маете?А в эт... - Пропущен пробел после знака препинания.

Найденная ошибка:
...тогда,когда ... - Пропущен пробел после знака препинания.

Найденная ошибка:
...сивов;затем ... - Пропущен пробел после знака препинания.

Найденная ошибка:
...сразу,но впо... - Пропущен пробел после знака препинания.

Найденная ошибка:
...нарей,чем ст... - Пропущен пробел после знака препинания.

Найденная ошибка:
...зиция:непрот... - Пропущен пробел после знака препинания.

Найденная ошибка:
... злом,но это... - Пропущен пробел после знака препинания.

Найденная ошибка:
...учает,а такж... - Пропущен пробел после знака препинания.

Найденная ошибка:
...юбого,даже у... - Пропущен пробел после знака препинания.

Найденная ошибка:
...меня шырокий... - "Жи-Ши" пиши с "и"!

Найденная ошибка:
...рная жызненн... - "Жи-Ши" пиши с "и"!

Исправленный текст:
Такая, знаете ли, мура получается с этим программированием, но поначалу всё вроде шло хорошо! Даже замечательно! Но ведь в какой-то момент всегда начинаются проблемы, вы понимаете? А в этот раз они начались тогда, когда дошёл сначала до массивов; затем было сложно с циклами и массивами управляться сразу, но вполне ещё терпимо; потом вроде бы разобрался, а думаете - это легко для гуманитария? Для гуманитария, может быть, и легко, но для меня - нет. Мне как-то проще траллить технарей, чем стать на их уровень в программировании. У меня широкий кругозор и шикарная жизненная позиция: непротивление насилию злом, но это, как ни странно, не помогает освоить программирование. Всё это весьма удручает, а также выбивает из колеи. А выбитый из колеи гуманитарий способен затралить любого, даже уравновешенного технаря-программиста на языке PHP. Это кардинально меняет ситуацию, описанную здесь. Если же я сделаю всё так, как должно быть сделано, то все останутся целы.