fork(2) download
  1. <?php
  2. /*«Grammar Nazi». Напиши скрипт, проверяющий текст на наличие злостных ошибок:
  3.  
  4.   нет пробела после запятой, точки с запятой, восклицательного знака, вопросительного знака, двоеточия
  5.   «жи» или «ши» написано с буквой ы
  6.   в тексте есть слово «координально» или «сдесь», «зделал», «зделаю», «зделан»
  7.   в тексте есть слова «а» или «но» без запятой перед ними.
  8.   (можешь добавить еще несколько правил, если хорошо знаешь русский язык)
  9.  
  10. В случае обнаружения ошибки скрипт должен писать сообщение об этом и выводить кусок текста с ошибкой (чтобы было понятно, что не так).*/
  11.  
  12.  
  13. $text = <<<EOF
  14. Утра, анон. Жывотные Хочу принести тебе прохладную. В общем захотел координально я найти денег, нет, даже не так. Так сдесь как у меня никогда не было девушек, за зделают руку не держался, снимал только шлюх. Я решил зарегаться на мамбе и посмотреть там тянок. В общем ничего толком не вышло из этого, но мне начали писать парни с целью ебли, некоторые предлогали деньги. И вот попался один довольно няшный кун. Вследствие чего я смог заработать 10к деревяных за ночь. Мне был окак-то все равно, что с мужиком и понял, что от этого нихуевый профит + этот кун какой-то финансовый директор. В общем списались, после созвонились и я приехал к концу рабочего дня к нему на работу, пили водку, разговаривали, он довольно умный, интересно было с ним болтать, там долго сидели. А скажу сразу, что я еблан и взял деньги только утром, то есть после моей работы, это была ммоя первая ошибка. Так что мы пили, разговаривали о политике, немного о религии, эволюцию, спорт и тому подобное,он еще аниму смотрит иногда и гоняет в старкрафт, через несколько часов мы поебались в каком-то конференц-зале, ничего особенного, ожидал большего, сисурити. Тут вторая была моя ошибка. что не сказал ему одеть гондон, кстати, сосать член довольно легко и не противно, тем более он относительно скорострел, так что после минут 5-7 я был сверху, потом снизу, так же мало чего чувствовал, ни боли, ни удовольствия, так наше соитие с ласками продолжались минут 20.После он засунл, я рядом в обнимку, довольно мило. После я проснулся и сидел за пекой у него и кушал. После он проснулся, я сказал про деньги, он мне их отдал и я пошел домой, он сказал, что вечером созвонимся. Щас мысль идет с него брать деньги + гулять и сидеть в кафе за его счет и тому подобное, ибо он при деньгах и довольно милый. Или же искать еще \"клиентов\".
  15. Реквестую ваши стори о похождениях но и спрашиваю советы, что и как дальше а действовать.
  16. Пикрандом.
  17. EOF;
  18.  
  19. $regexpRuleOne = '/[а-яё]*жы[а-я]*|[а-яё]*шы[а-яё]*/ui';
  20. $regexpRuleTwo = '/[а-яё]* а [а-я]*|[а-яё]* но [а-яё]*/ui';
  21. $regexpRuleTree = '/[а-яё]+ *[!.,:?;][а-яё]+/ui';
  22. $regexpRuleFour = '/координально|сдесь|зделал|зделаю|зделан/ui';
  23. $errorOne = 'ЖИ ШИ пиши с буквой И.';
  24. $errorTwo = 'В тексте есть слова «а» или «но» без запятой перед ними.';
  25. $errorTree = 'Нет пробела после запятой, точки с запятой, восклицательного знака, вопросительного знака, двоеточия.';
  26. $errorFour = 'В тексте есть слово «координально» или «сдесь», «зделал», «зделаю», «зделан».';
  27. $rule = array();
  28.  
  29. function summonGrammarNazi($regexp, $text, $rule, $error) {
  30. if (preg_match_all($regexp, $text, $rule)) {
  31. foreach($rule as $index => $val) {
  32. foreach($val as $index => $val) {
  33. echo "Ошибка: {$val}. " . $error . "\n";
  34. }
  35. echo "\n";
  36. $ruleOne = array();
  37. }
  38. }
  39. }
  40.  
  41. summonGrammarNazi($regexpRuleOne, $text, $rule, $errorOne);
  42. summonGrammarNazi($regexpRuleTwo, $text, $rule, $errorTwo);
  43. summonGrammarNazi($regexpRuleTree, $text, $rule, $errorTree);
  44. summonGrammarNazi($regexpRuleFour, $text, $rule, $errorFour);
  45.  
  46.  
Success #stdin #stdout 0.02s 52472KB
stdin
Standard input is empty
stdout
Ошибка: Жывотные. ЖИ ШИ пиши с буквой И.

Ошибка:  но мне. В тексте есть слова «а» или «но» без запятой перед ними.
Ошибка:  А скажу. В тексте есть слова «а» или «но» без запятой перед ними.
Ошибка: похождениях но . В тексте есть слова «а» или «но» без запятой перед ними.
Ошибка: дальше а действовать. В тексте есть слова «а» или «но» без запятой перед ними.

Ошибка: подобное,он. Нет пробела после запятой, точки с запятой, восклицательного знака, вопросительного знака, двоеточия.

Ошибка: координально. В тексте есть слово «координально» или «сдесь», «зделал», «зделаю», «зделан».
Ошибка: сдесь. В тексте есть слово «координально» или «сдесь», «зделал», «зделаю», «зделан».
Ошибка: зделаю. В тексте есть слово «координально» или «сдесь», «зделал», «зделаю», «зделан».