fork download
  1. <?php
  2. header("Content-Type: text/plain");
  3.  
  4. // Правильные:
  5. $text = <<<EOF
  6. нет пробела после запятой,точки с запятой;восклицательного знака!вопросительного знака?двоеточия:
  7. «жы» или «шы» написано с буквой ы,
  8. в тексте есть слово «координально» или «сдесь», «зделал», «зделаю», «зделан»
  9. в тексте есть слова а или но без запятой перед ними.
  10. EOF
  11. ;
  12.  
  13. // Найденное
  14. $result = array();
  15.  
  16. // Список ошибок
  17. $regexp = array(
  18. '/(,|;|!|[?]|:)(\\S)/u',
  19. '/(ж|ш)(ы)/u',
  20. '/(координально)/u','/(сдесь)/u','/(зделал)/u','/(зделаю)/u','/(зделан)/u',
  21. '/(\\s)(но|а)(\\s)/u'
  22. );
  23. $regexpStr = "
  24. /(,|;|!|[?]|:)(\\S)|
  25. (ж|ш)(ы)|
  26. (координально)|(сдесь)|(зделал)|(зделаю)|(зделан)|
  27. (\\s)(но|а)(\\s)
  28. /u";
  29. // Список замены
  30. $replacement = array(
  31. '$1 $2',
  32. '$1и',
  33. 'кардинально','здесь','сделал','сделаю','сделан',
  34. '$1$2,$3'
  35. );
  36.  
  37. // Выводим кусок текста с ошибкой
  38. $count = preg_match_all($regexpStr, $text, $result, PREG_SET_ORDER);
  39. echo "Всего ошибок: {$count}\nНайденные ошибки:\n";
  40. foreach ($result as $e) {
  41. echo "{$e[0]}\n";
  42. }
  43.  
  44. // Исправляем ошибки в тексте
  45. $text = preg_replace ($regexp, $replacement, $text);
  46. echo "\nИсправленный текст:\n{$text}";
  47.  
  48. ?>
  49.  
Success #stdin #stdout 0.02s 52432KB
stdin
Standard input is empty
stdout
Всего ошибок: 8
Найденные ошибки:
,т
;в
!в
?д
сдесь
зделал
зделаю
зделан

Исправленный текст:
нет пробела после запятой, точки с запятой; восклицательного знака! вопросительного знака? двоеточия:
«жи» или «ши» написано с буквой ы,
в тексте есть слово «кардинально» или «здесь», «сделал», «сделаю», «сделан»
в тексте есть слова а, или но, без запятой перед ними.