fork(1) download
  1. <?php
  2. // Грамматический националист
  3.  
  4. $text = "Ехал Грека через реку. Видит Грека а сдесь в реке рак!Сунул в реку,руку Грека.Рак за жызнь Греку - цап.";
  5. $errors = [
  6. 'нет пробела после запятой' => '/,\w+/ui',
  7. 'нет пробела после точки' => '/\.\w+/ui',
  8. 'нет пробела после точки с запятой' => '/;\w+/ui',
  9. 'нет пробела после двоеточия' => '/:\w+/ui',
  10. 'нет пробела после вослицательного знака ' => '/!\w+/ui',
  11. 'нет пробела после вопросительного знака' => '/\?\w+/ui',
  12. 'нет запятой перед союзом а/но' => '/\w+[^,]\s(а|но)/ui',
  13. 'орфографическая ошибка в слове кардинально' => '/координально/ui',
  14. 'орфографическая ошибка в слове здесь' => '/сдесь/ui',
  15. 'орфографическая ошибка в слове сделал' => '/зделал/ui',
  16. 'орфографическая ошибка в слове сделаю' => '/зделаю/ui',
  17. 'орфографическая ошибка в слове сделан' => '/зделан/ui',
  18. 'орфографическая ошибка в слове сделаю' => '/зделаю/ui',
  19. 'обнаружена ошибка, «жи» и «ши» пишется с буквой «и»' => '/(жы|шы)\w+/ui',
  20. ];
  21.  
  22. // Разделяем значения массива на переменные
  23. foreach ($errors as $comment => $regexp) {
  24. // Находим ошибки в тексте и отдаем массив с ними
  25. if (preg_match_all($regexp, $text, $matches)) {
  26. foreach($matches[0] as $value) {
  27. echo "Внимание: \"{$value}\" $comment\n";
  28. }
  29. }
  30. }
Success #stdin #stdout 0.01s 24168KB
stdin
Standard input is empty
stdout
Внимание: ",руку" нет пробела после запятой
Внимание: ".Рак" нет пробела после точки
Внимание: "!Сунул" нет пробела после вослицательного знака 
Внимание: "Грека а" нет запятой перед союзом а/но
Внимание: "сдесь" орфографическая ошибка в слове здесь
Внимание: "жызнь" обнаружена ошибка, «жи» и «ши» пишется с буквой «и»