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

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

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