fork(5) download
  1. <?php
  2.  
  3.  
  4. $coolStory = "Такая,знаете ли,мура получается с этим программированием;поначалу всё вроде шло хорошо!Даже замечательно! Но ведь в какой-то момент всегда начинаются проблемы, вы понимаете?А в этот раз они начались тогда,когда дошёл сначала до массивов;затем было сложно с циклами и массивами управляться сразу,но вполне ещё терпимо; потом вроде бы разобрался. Думаете -это легко для гуманитария? Для гуманитария, может быть, и легко, а для меня - нет. Мне как-то проще траллить технарей,чем стать на их уровень в программировании. У меня шырокий кругозор и шикарная жызненная позиция:непротивление насилию злом,но это, как ни странно, не помогает освоить программирование. Всё это весьма удручает,а также выбивает из колеи. А выбитый из колеи гуманитарий способен затралить любого,даже уравновешенного технаря-программиста на языке PHP. Это координально меняет ситуацию, описанную сдесь. Если же я зделаю всё так, как должно быть зделано, то все останутся целы.";
  5.  
  6. $regExp = '/координально|сдесь|здела[лнюет]{1,2}|\\s+а\\s+|\\s+но\\s+|[,\\.!\\?:;][^\\s]|[a-яё]*жы|шы/iu';
  7.  
  8. $possibleErrors = array (
  9. 0 => array ( "pattern" => "/координально/ui",
  10. "message" => "- Ошибка в слове \"кардинально\"."
  11. ),
  12. 1 => array ( "pattern" => "/сдесь/ui",
  13. "message" => "- Не \"сдесь\", а \"здесь\"."
  14. ),
  15. 2 => array ( "pattern" => "/здела[лнoюет]{1,2}/ui",
  16. "message" => "- Приставки \"з\" нет в русском языке."
  17. ),
  18. 3 => array ( "pattern" => "/\\s+а\\s+/ui" ,
  19. "message" => "- Пропущена запятая перед союзом \"а\"."
  20. ),
  21. 4 => array ( "pattern" => "/\\s+но\\s+/ui",
  22. "message" => "- Пропущена запятая перед союзом \"но\"."
  23. ),
  24. 5 => array ( "pattern" => "/[,\\.!\\?:;][^\\s]/ui",
  25. "message" => "- Пропущен пробел после знака препинания."
  26. ),
  27. 5 => array ( "pattern" => "/[a-яё]*жы|шы/ui" ,
  28. "message" => "- \"Жи-Ши\" пиши с \"и\"!"
  29. )
  30. );
  31.  
  32. $errs = array(); /*Пустой массив, в который собираются ошибки*/
  33.  
  34. preg_match_all($regExp, $coolStory, $errs); /*С помощью функции вытаскиваем регуляркой из текста все ошибки и заполняем ими массив $errs*/
  35.  
  36. $matches = $errs[0]; /*Определяем переменную для всех ошибок, вытащенных предыдущей функцией*/
  37.  
  38. $number = count($matches); /*Считаем количество ошибок в тексте*/
  39.  
  40. //var_dump($matches);
  41.  
  42. for ($i=0; $i < $number; $i++) { /*Цикл для поиска ошибок с помощью отдельных регулярок (ключей) в массиве и вывода соответствующих регуляркам правил (значений в массиве)*/
  43.  
  44. if (preg_match($possibleErrors[$i]['pattern'], $matches[$i])) { /*Достаём из массива регулярку, подставляем её в функцию, проверяем найденные ошибки в массиве $matches на соответствие*/
  45. $message = $possibleErrors[$i]['message']; /*Выводим соответствующее правило из массива (содержание)*/
  46. $pattern = $matches[$i];
  47. echo "{$pattern} и {$message}\n";;
  48. echo "..." . mb_substr($coolStory, $matches[$i] - 10, 60) . "... $message \n";
  49. }
  50. }
  51.  
  52. //var_dump($pattern);
  53. //var_dump($message);
  54. ?>
  55.  
Success #stdin #stdout #stderr 0.02s 52480KB
stdin
Standard input is empty
stdout
 Но  и - Пропущена запятая перед союзом "но".
...утся целы.... - Пропущена запятая перед союзом "но". 
stderr
PHP Notice:  Undefined offset: 6 in /home/0IHNPg/prog.php on line 46
PHP Warning:  preg_match(): Empty regular expression in /home/0IHNPg/prog.php on line 46
PHP Notice:  Undefined offset: 7 in /home/0IHNPg/prog.php on line 46
PHP Warning:  preg_match(): Empty regular expression in /home/0IHNPg/prog.php on line 46
PHP Notice:  Undefined offset: 8 in /home/0IHNPg/prog.php on line 46
PHP Warning:  preg_match(): Empty regular expression in /home/0IHNPg/prog.php on line 46
PHP Notice:  Undefined offset: 9 in /home/0IHNPg/prog.php on line 46
PHP Warning:  preg_match(): Empty regular expression in /home/0IHNPg/prog.php on line 46
PHP Notice:  Undefined offset: 10 in /home/0IHNPg/prog.php on line 46
PHP Warning:  preg_match(): Empty regular expression in /home/0IHNPg/prog.php on line 46
PHP Notice:  Undefined offset: 11 in /home/0IHNPg/prog.php on line 46
PHP Warning:  preg_match(): Empty regular expression in /home/0IHNPg/prog.php on line 46
PHP Notice:  Undefined offset: 12 in /home/0IHNPg/prog.php on line 46
PHP Warning:  preg_match(): Empty regular expression in /home/0IHNPg/prog.php on line 46
PHP Notice:  Undefined offset: 13 in /home/0IHNPg/prog.php on line 46
PHP Warning:  preg_match(): Empty regular expression in /home/0IHNPg/prog.php on line 46
PHP Notice:  Undefined offset: 14 in /home/0IHNPg/prog.php on line 46
PHP Warning:  preg_match(): Empty regular expression in /home/0IHNPg/prog.php on line 46
PHP Notice:  Undefined offset: 15 in /home/0IHNPg/prog.php on line 46
PHP Warning:  preg_match(): Empty regular expression in /home/0IHNPg/prog.php on line 46
PHP Notice:  Undefined offset: 16 in /home/0IHNPg/prog.php on line 46
PHP Warning:  preg_match(): Empty regular expression in /home/0IHNPg/prog.php on line 46
PHP Notice:  Undefined offset: 17 in /home/0IHNPg/prog.php on line 46
PHP Warning:  preg_match(): Empty regular expression in /home/0IHNPg/prog.php on line 46
PHP Notice:  Undefined offset: 18 in /home/0IHNPg/prog.php on line 46
PHP Warning:  preg_match(): Empty regular expression in /home/0IHNPg/prog.php on line 46
PHP Notice:  Undefined offset: 19 in /home/0IHNPg/prog.php on line 46
PHP Warning:  preg_match(): Empty regular expression in /home/0IHNPg/prog.php on line 46
PHP Notice:  Undefined offset: 20 in /home/0IHNPg/prog.php on line 46
PHP Warning:  preg_match(): Empty regular expression in /home/0IHNPg/prog.php on line 46
PHP Notice:  Undefined offset: 21 in /home/0IHNPg/prog.php on line 46
PHP Warning:  preg_match(): Empty regular expression in /home/0IHNPg/prog.php on line 46