fork download
  1. <?php
  2. /*Напиши скрипт, проверяющий текст на наличие злостных ошибок:
  3. нет пробела после запятой, точки с запятой, восклицательного знака, вопросительного знака, двоеточия
  4. «жи» или «ши» написано с буквой ы
  5. в тексте есть слово «координально» или «сдесь», «зделал», «зделаю», «зделан»
  6. в тексте есть слова «а» или «но» без запятой перед ними.
  7. (можешь добавить еще несколько правил, если хорошо знаешь русский язык)
  8. В случае обнаружения ошибки скрипт должен писать сообщение об этом и выводить кусок текста с ошибкой
  9. (чтобы было понятно, что не так).*/
  10.  
  11. //$text = "Привет,шыр!труд:Жыр?пассаЖЫР;зделаю Координально но, например сдесь решена проблема ушыбов.
  12. // Зделано многое а? ведь это зделал я";
  13. $text = "Один ананас, но зато какой";
  14.  
  15. $rules = [
  16. ['regexp' => '/[,;!?:][^,;!?:\\s]+/u', 'comment' => 'отсутствие пробелов'],
  17. ['regexp' => '/[а-яё]*(?:ж|ш)ы[а-яё]*/ui', 'comment' => 'написание жи-ши'],
  18. ['regexp' => '/координально|сдесь|здела(?:л|ю|н)\\S*/ui', 'comment' => 'орфографические'],
  19. ['regexp' => '/\\S*[^,]\\s(?:а|но).?/ui', 'comment' => 'пунктуация']
  20. ];
  21.  
  22. foreach ($rules as $rule){
  23.  
  24. $matches = array();
  25. $count = preg_match_all($rule['regexp'], $text, $matches);
  26. if ($count){
  27. echo "Нашлись ошибки ({$rule['comment']}) {$count} шт :\n";
  28. foreach ($matches[0] as $mistake){
  29. echo "{$mistake}\t";
  30. };
  31. echo "\n";
  32. } else {
  33. echo "Ошибки ({$rule['comment']}) отсутствуют\n";
  34. }
  35. }
Success #stdin #stdout 0.02s 52472KB
stdin
Standard input is empty
stdout
Ошибки (отсутствие пробелов) отсутствуют
Ошибки (написание жи-ши) отсутствуют
Ошибки (орфографические) отсутствуют
Нашлись ошибки (пунктуация) 2 шт :
Один ан	  но