fork(1) download
  1. <?php
  2. $offset = 10; // конфиг длины строки, которой дополняется место ошибки
  3. // не могу придумать внятное имя
  4. // впрочем для каждого вида ошибки он должен быть свой
  5.  
  6. $possibleErrors = [
  7. [
  8. 'regExp' => "/.{0,{$offset}}\b\w+[,;!?:]\S+\b.{0,{$offset}}/ui",
  9. 'descr' => 'Нет пробела после запятой, точки с запятой, восклицательного знака, '.
  10. 'вопросительного знака, двоеточия.',
  11. ],
  12. [
  13. 'regExp' => "/.{0,{$offset}}\b\w*[жш]ы\w*\b.{0,{$offset}}/ui",
  14. 'descr' => 'Жи/ши написано через "ы".',
  15. ],
  16. [
  17. 'regExp' => "/.{0,{$offset}}\bкоординально\b.{0,{$offset}}/ui",
  18. 'descr' => 'Ошибка в слове "кардинально."',
  19. ],
  20. [
  21. 'regExp' => "/.{0,{$offset}}\b(сдесь|зделан|зделаю)\b.{0,{$offset}}/ui",
  22. 'descr' => 'Неправильная приставка c-/з-.',
  23. ],
  24. [
  25. 'regExp' => "/.{0,{$offset}}[^.!?;:—,]\s\b(но|а)\b.{0,{$offset}}/ui",
  26. 'descr' => 'Пропущена запятая перед предлогом "а" или "но".',
  27. ],
  28. ];
  29.  
  30. $text = 'Тут координально пропущен пробел,после запятой но перед точкой'.
  31. 'Слово пушыстый сдесь написано с ошыбкой.';
  32.  
  33. foreach ($possibleErrors as $error) {
  34. $matches = [];
  35. preg_match_all($error['regExp'], $text, $matches);
  36. foreach ($matches[0] as $match) {
  37. echo $error['descr'] . " Место с ошибкой: \n>> {$match}\n\n";
  38. }
  39. }
  40.  
Success #stdin #stdout 0.03s 52480KB
stdin
Standard input is empty
stdout
Нет пробела после запятой, точки с запятой, восклицательного знака, вопросительного знака, двоеточия. Место с ошибкой: 
>>  пропущен пробел,после запятой н

Жи/ши написано через "ы". Место с ошибкой: 
>> чкойСлово пушыстый сдесь нап

Жи/ши написано через "ы". Место с ошибкой: 
>> исано с ошыбкой.

Ошибка в слове "кардинально." Место с ошибкой: 
>> Тут координально пропущен 

Неправильная приставка c-/з-. Место с ошибкой: 
>>  пушыстый сдесь написано 

Пропущена запятая перед предлогом "а" или "но". Место с ошибкой: 
>> сле запятой но перед точ