fork(1) 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. $regex = [
  15. "/[жш]ы/ui" => "*$0*",
  16. "/координально/ui" => "*$0*",
  17. "/здела[лню]/ui" => "*$0*",
  18. "/сдесь/ui" => "*$0*",
  19. "/(\s+(а|но))[\s,.:?!]/ui" => "[$1]",
  20. "/[.?!:,]\S/u" => "[$0]",
  21. "/\s+[.?!:,]/u" => "[$0]"
  22. ];
  23. echo "Типы ошибок: ** - орфографические ошибки\t[] - ошибки в пунктуации\n";
  24. foreach ($sentences as $sentence){
  25. echo "Ошибки в предложении: " . preg_replace(array_keys($regex), array_values($regex), $sentence) . "\n";
  26. /* foreach ($regex as $reg => $replacement){
  27.   if(preg_match($reg, $sentence)){
  28.   echo "Ошибки в предложении: " . preg_replace($reg, $replacement, $sentence) . "\n";
  29.   }
  30.  
  31.   }*/
  32. }
  33. ?>
Success #stdin #stdout 0.01s 82624KB
stdin
Standard input is empty
stdout
/*«Grammar Nazi». Напиши скрипт, проверяющий текст на наличие злостных ошибок:

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

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