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