fork(2) download
  1. /*«Grammar Nazi». Напиши скрипт, проверяющий текст на наличие злостных ошибок:
  2.  
  3. нет пробела после запятой, точки с запятой, восклицательного знака, вопросительного знака, двоеточия
  4. «жи» или «ши» написано с буквой ы
  5. в тексте есть слово «координально» или «сдесь», «зделал», «зделаю», «зделан»
  6. в тексте есть слова «а» или «но» без запятой перед ними.
  7. (можешь добавить еще несколько правил, если хорошо знаешь русский язык)
  8.  
  9. В случае обнаружения ошибки скрипт должен писать сообщение об этом и выводить кусок текста с ошибкой (чтобы было понятно, что не так).*/
  10. <?php
  11. //mb_internal_encoding('utf-8');
  12. $text = "Текст с кучей плохих оШыбок. Сдесь я координально зделал ошыбки, а не , но а но жы поставил запятую , и ? ! , пробел перед ней.";
  13. $sentences = preg_split("/[\.?!]/u", $text, 0, PREG_SPLIT_NO_EMPTY);
  14. foreach ($sentences as $sentence){
  15. if(preg_match("/[жш]ы/ui", $sentence)){
  16. echo "ЖИ/ШИ написано с буквой Ы в " . preg_replace("/[жш]ы/ui", "[$0]", $sentence) . "\n";
  17. }
  18. if(preg_match("/координально/ui", $sentence)){
  19. echo "Ошибка в слове кардинально в " . preg_replace("/координально/ui", "[$0]", $sentence) . "\n";
  20. }
  21. if(preg_match("/здела[лню]/ui", $sentence)){
  22. echo "Неправильно написаны слова сделал/сделаю/сделан в " . preg_replace("/здела[лню]/ui", "[$0]", $sentence) . "\n";
  23. }
  24. if(preg_match("/сдесь/ui", $sentence)){
  25. echo "Неправильно написано слово здесь в " . preg_replace("/сдесь/ui", "[$0]", $sentence) . "\n";
  26. }
  27. if(preg_match("/\s+(а|но)/ui", $sentence)) {
  28. echo "Не поставили запятую перед а или но в " . preg_replace("/[,]{0}\s(а|но)/ui", "[$0]", $sentence) . "\n";
  29. }
  30. if(preg_match("/\s+[.?!:,]/u", $sentence)){
  31. echo "Поставили пробел перед знаком препинания в " . preg_replace("/\s+[.?!:,]/u", "[$0]", $sentence) . "\n";
  32. }
  33. }
  34. ?>
Success #stdin #stdout 0s 82624KB
stdin
Standard input is empty
stdout
/*«Grammar Nazi». Напиши скрипт, проверяющий текст на наличие злостных ошибок:

нет пробела после запятой, точки с запятой, восклицательного знака, вопросительного знака, двоеточия
«жи» или «ши» написано с буквой ы
в тексте есть слово «координально» или «сдесь», «зделал», «зделаю», «зделан»
в тексте есть слова «а» или «но» без запятой перед ними.
(можешь добавить еще несколько правил, если хорошо знаешь русский язык)

В случае обнаружения ошибки скрипт должен писать сообщение об этом и выводить кусок текста с ошибкой (чтобы было понятно, что не так).*/
ЖИ/ШИ написано с буквой Ы в Текст с кучей плохих о[Шы]бок
ЖИ/ШИ написано с буквой Ы в  Сдесь я координально зделал о[шы]бки, а не , но а но [жы] поставил запятую , и 
Ошибка в слове кардинально в  Сдесь я [координально] зделал ошыбки, а не , но а но жы поставил запятую , и 
Неправильно написаны слова сделал/сделаю/сделан в  Сдесь я координально [зделал] ошыбки, а не , но а но жы поставил запятую , и 
Неправильно написано слово здесь в  [Сдесь] я координально зделал ошыбки, а не , но а но жы поставил запятую , и 
Не поставили запятую перед а или но в  Сдесь я координально зделал ошыбки,[ а] не ,[ но][ а][ но] жы поставил запятую , и 
Поставили пробел перед знаком препинания в  Сдесь я координально зделал ошыбки, а не[ ,] но а но жы поставил запятую[ ,] и 
Поставили пробел перед знаком препинания в [ ,] пробел перед ней