fork download
  1. <?php
  2.  
  3. $text = "Привет,шыр!труд:жыр?пассажыр;зделаю Координально но сдесь решена проблема ушыбов.\
  4. Зделано многое а ведь это зделал я";
  5.  
  6. $regex['space'] = '/[,;!?:][^,;!?:\\s]+/u';//проверка на пробелы
  7. $regex['zhsh'] = '/[а-яА-Я]*(?:ж|ш)ы[а-яА-Я]*/u';//жи ши
  8. $regex['orpho'] = '/координально|сдесь|з(?:делал|делаю|делан)[\\S]*/ui';//орфография
  9. $regex['punctum'] = '/[а-яА-Я]*[^,]\\s(?:а|но)\\s/u';//пунктуация
  10.  
  11. foreach ($regex as $rule => $pattern){
  12.  
  13. $message = '';
  14. switch ($rule){
  15. case 'space':
  16. $message = 'отсутствие пробелов';
  17. break;
  18. case 'zhsh':
  19. $message = 'написание жи-ши';
  20. break;
  21. case 'orpho':
  22. $message = 'орфографические';
  23. break;
  24. case 'punctum':
  25. $message = 'пунктуация';
  26. break;
  27. }
  28.  
  29. $matches = array();
  30.  
  31. if ($count = preg_match_all($pattern, $text, $matches)){
  32. echo "Нашлись ошибки ({$message}) {$count} шт :\n";
  33. foreach ($matches[0] as $mistake){
  34. echo "{$mistake}\t";
  35. };
  36. echo "\n";
  37. } else {
  38. echo "Ошибки ({$message}) отсутствуют\n";
  39. }
  40. }
Success #stdin #stdout 0.02s 52432KB
stdin
Standard input is empty
stdout
Нашлись ошибки (отсутствие пробелов) 5 шт :
,шыр	!труд	:жыр	?пассажыр	;зделаю	
Нашлись ошибки (написание жи-ши) 4 шт :
шыр	жыр	пассажыр	ушыбов	
Нашлись ошибки (орфографические) 5 шт :
зделаю	Координально	сдесь	Зделано	зделал	
Нашлись ошибки (пунктуация) 2 шт :
Координально но 	многое а