fork(1) download
  1. <?php
  2.  
  3.  
  4. $text = "«Grammar Nazi». Напиши скрипт, проверяющий текст на наличие злостных ошибок:
  5. нет пробела после запятой,точки с запятой;восклицательного!знака,
  6. вопросительного?знака, двоеточия:«жы» или «шы» написано с буквой ы.
  7. в тексте есть слово «координально» или «зделал», «зделаю», «зделан»
  8. в тексте есть слова «а» или «но» без запятой перед ними. Например а или но даже.";
  9.  
  10. echo $text."\n\n";
  11.  
  12. $regexs = array(
  13. '/([,.!?;:])([а-яёА-ЯЁa-z0-9])/ui' => 'пробел после знака препинания',
  14. '/координально/ui' => 'правильно будет "кАрдинально',
  15. '/(здела)(л|ю|н)/ui' => 'приставки "З" не существует',
  16. '/(ж|ш)ы/ui' => 'жи/ши пиши с буквой И',
  17. '/([а-яёА-ЯЁa-z0-9]+)(\\s+)(а|но)(\\s+)/ui' => 'запятая перед "а", "но"'
  18. );
  19. $errors = array();
  20.  
  21. foreach($regexs as $pattern => $message) {
  22. preg_match_all($pattern, $text, $errors, PREG_PATTERN_ORDER);
  23. for($i = 0; isset($errors[0][$i]); $i++) {
  24. echo $errors[0][$i]." - ".$message."\n";
  25. }
  26.  
  27. }
Success #stdin #stdout 0.01s 52488KB
stdin
Standard input is empty
stdout
«Grammar Nazi». Напиши скрипт, проверяющий текст на наличие злостных ошибок:
нет пробела после запятой,точки с запятой;восклицательного!знака, 
вопросительного?знака, двоеточия:«жы» или «шы» написано с буквой ы.
в тексте есть слово «координально» или «зделал», «зделаю», «зделан»
в тексте есть слова «а» или «но» без запятой перед ними. Например а или но даже.

,т - пробел после знака препинания
;в - пробел после знака препинания
!з - пробел после знака препинания
?з - пробел после знака препинания
координально - правильно будет "кАрдинально
зделал - приставки "З" не существует
зделаю - приставки "З" не существует
зделан - приставки "З" не существует
жы - жи/ши пиши с буквой И
шы - жи/ши пиши с буквой И
Например а  - запятая перед "а", "но"
или но  - запятая перед "а", "но"