fork(2) download
  1. <?php
  2.  
  3.  
  4. $text = <<<EOF
  5. Нет пробела после запятой,Либо после точки с запятой;а иногда и даже после таких знаков:восклицательного!И даже вопросительного.Найдет ли мой скрипт такую ошибку?Посмотрим.
  6. "Жи" и "ши" мы пишем с буквой "и" в словах "шына", "жывотное" и др.
  7. В тексте есть слово "координально", "сдесь", "зделал", "зделан" а также "зделаю" но нет слова "чюдо" и "щюка".
  8. EOF
  9. ;
  10.  
  11. $regexp = '/([а-яё]+)(,|;|!|\\.|\\?|\\:)([а-яё]+)/ui';
  12. $text = checking($text, $regexp, 7);
  13. $regexp = '/\bз(д[а-яё]+)\b/ui';
  14. $text = checking($text, $regexp, 2);
  15. $regexp = '/([а-яё]*ж|ш)ы([а-яё]*)/ui';
  16. $text = checking($text, $regexp, 3);
  17. $regexp = '/([а-яё]*ч|щ)ю([а-яё]*)/ui';
  18. $text = checking($text, $regexp, 4);
  19. $regexp = '/сдесь/ui';
  20. $text = checking($text, $regexp, 5);
  21. $regexp = '/координал[а-яё]+/ui';
  22. $text = checking($text, $regexp, 6);
  23. $regexp = '/([^,;.])( )(а|но) /';
  24. $text = checking($text, $regexp, 1);
  25.  
  26. echo $text;
  27.  
  28. function checking($text, $regexp, $type){
  29. $error = false;
  30. $matches = array();
  31. $count = preg_match_all($regexp, $text, $matches);
  32. foreach ($matches[0] as $element){
  33. echo "В тексте найдена ошибка: {$element}\n";
  34. $error = true;
  35. //echo "$count\n";
  36. //var_dump($matches);
  37. }
  38. if ($error == true){
  39. $text = fixError($text, $regexp, $type);
  40. return $text;
  41. }
  42. }
  43.  
  44. function fixError($text, $regexp, $type){
  45. if ($type == 5){
  46. $text = preg_replace($regexp, 'здесь', $text);
  47. }else if($type == 6){
  48. $text = preg_replace($regexp, 'кардинально', $text);
  49. }else if($type == 4){
  50. $text = preg_replace($regexp, '$1у$2', $text);
  51. }else if($type == 3){
  52. $text = preg_replace($regexp, '$1и$2', $text);
  53. }else if($type == 2){
  54. $text = preg_replace($regexp, 'c$1', $text);
  55. }else if($type == 1){
  56. $text = preg_replace($regexp, '$1, $3 ', $text);
  57. }else if($type == 7){
  58. $text = preg_replace($regexp, '$1$2 $3', $text);
  59. }
  60.  
  61. return $text;
  62. }
Success #stdin #stdout 0.01s 82944KB
stdin
Standard input is empty
stdout
В тексте найдена ошибка: запятой,Либо
В тексте найдена ошибка: запятой;а
В тексте найдена ошибка: знаков:восклицательного
В тексте найдена ошибка: вопросительного.Найдет
В тексте найдена ошибка: ошибку?Посмотрим
В тексте найдена ошибка: зделал
В тексте найдена ошибка: зделан
В тексте найдена ошибка: зделаю
В тексте найдена ошибка: шына
В тексте найдена ошибка: жывотное
В тексте найдена ошибка: чюдо
В тексте найдена ошибка: щюка
В тексте найдена ошибка: сдесь
В тексте найдена ошибка: координально
В тексте найдена ошибка: " а 
В тексте найдена ошибка: " но 
Нет пробела после запятой, Либо после точки с запятой; а иногда и даже после таких знаков: восклицательного!И даже вопросительного. Найдет ли мой скрипт такую ошибку? Посмотрим.
"Жи" и "ши" мы пишем с буквой "и" в словах "шина", "животное" и др.
В тексте есть слово "кардинально", "здесь", "cделал", "cделан", а также "cделаю", но нет слова "чудо" и "щука".