fork(2) download
  1. <?php
  2.  
  3.  
  4. $coolStory = "Такая,знаете ли,мура получается,а с этим программированием;поначалу всё вроде шло хорошо!Даже замечательно! Но ведь в какой-то момент всегда начинаются проблемы, вы понимаете?А в этот раз они начались тогда,когда дошёл сначала до массивов;затем было сложно с циклами и массивами управляться сразу,но вполне ещё терпимо; потом вроде бы разобрался. Думаете -это легко для гуманитария? Для гуманитария, может быть, и легко, а для меня - нет. Мне как-то проще траллить технарей,чем стать на их уровень в программировании. У меня шырокий кругозор и шикарная жызненная позиция:непротивление насилию злом,но это, как ни странно, не помогает освоить программирование. Всё это весьма удручает,а также выбивает из колеи. А выбитый из колеи гуманитарий способен затралить любого,даже уравновешенного технаря-программиста на языке PHP. Это координально меняет ситуацию, описанную сдесь. Если же я зделаю всё так, как должно быть зделано, то все останутся целы.";
  5.  
  6. $regExp = '/координально|сдесь|здела[лноюет]{1,2}|\\s+а\\s+|\\s+но\\s+|[,\\.!\\?:;][^\\s]|(ж|ш)ы/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. 6 => array ( "pattern" => "/(ж|ш)ы/ui" ,
  28. "message" => "- \"Жи-Ши\" пиши с \"и\"!"
  29. )
  30. );
  31.  
  32. $errors = array(); /*Пустой массив, в который собираются ошибки*/
  33.  
  34. preg_match_all($regExp, $coolStory, $errors); /*С помощью функции вытаскиваем регуляркой из текста все ошибки и заполняем ими массив $errs*/
  35.  
  36. $matches = $errors[0]; /*Определяем переменную для всех ошибок, вытащенных предыдущей функцией*/
  37.  
  38. $number = count($matches); /*Считаем количество ошибок в тексте*/
  39.  
  40. //var_dump($matches);
  41.  
  42. for ($i=0; $i < $number; $i++) { /*Цикл для поиска ошибок с помощью отдельных регулярок (ключей) в массиве и вывода соответствующих регуляркам правил (значений в массиве)*/
  43.  
  44. foreach ($possibleErrors as $value) {
  45.  
  46. $pattern = $value['pattern'];
  47. $message = $value['message'];
  48.  
  49. if(preg_match($pattern, $matches[$i])) {
  50. //var_dump($pattern);
  51.  
  52. $startOfTheString = preg_match($pattern, $coolStory);
  53. $wrongText = mb_substr($coolStory, $startOfTheString, 30);
  54. $num = $i + 1;
  55. echo "{$num} {$message} Часть текста с ошибкой: ...{$wrongText}...\n";
  56. }
  57. }
  58. }
  59. //}
  60. //var_dump($pattern);
  61. //var_dump($message);
  62. ?>
  63.  
Success #stdin #stdout 0.03s 52432KB
stdin
Standard input is empty
stdout
1 - Пропущен пробел после знака препинания. Часть текста с ошибкой: ...акая,знаете ли,мура получается...
2 - Пропущен пробел после знака препинания. Часть текста с ошибкой: ...акая,знаете ли,мура получается...
4 - Пропущен пробел после знака препинания. Часть текста с ошибкой: ...акая,знаете ли,мура получается...
5 - Пропущен пробел после знака препинания. Часть текста с ошибкой: ...акая,знаете ли,мура получается...
8 - Пропущен пробел после знака препинания. Часть текста с ошибкой: ...акая,знаете ли,мура получается...
9 - Пропущен пробел после знака препинания. Часть текста с ошибкой: ...акая,знаете ли,мура получается...
12 - Пропущен пробел после знака препинания. Часть текста с ошибкой: ...акая,знаете ли,мура получается...
13 - "Жи-Ши" пиши с "и"! Часть текста с ошибкой: ...акая,знаете ли,мура получается...
14 - "Жи-Ши" пиши с "и"! Часть текста с ошибкой: ...акая,знаете ли,мура получается...
19 - Пропущен пробел после знака препинания. Часть текста с ошибкой: ...акая,знаете ли,мура получается...
20 - Ошибка в слове "кардинально". Часть текста с ошибкой: ...акая,знаете ли,мура получается...
21 - Не "сдесь", а "здесь". Часть текста с ошибкой: ...акая,знаете ли,мура получается...
22 - Приставки "з" нет в русском языке. Часть текста с ошибкой: ...акая,знаете ли,мура получается...
23 - Приставки "з" нет в русском языке. Часть текста с ошибкой: ...акая,знаете ли,мура получается...