<?php
/*«Grammar Nazi». Напиши скрипт, проверяющий текст на наличие злостных ошибок:

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

В случае обнаружения ошибки скрипт должен писать сообщение об этом и выводить кусок текста с ошибкой (чтобы было понятно, что не так).*/

error_reporting(-1);
mb_internal_encoding('utf-8');

$coolStory = /*<<<EOF*/
"Утра, анон. Жывотные Хочу принести тебе прохладную. В общем захотел координально я найти денег, нет, даже не так. Так  сдесь как у меня никогда не было девушек, за зделают руку не держался, снимал только шлюх. Я решил зарегаться на мамбе и посмотреть там тянок. В общем ничего толком не вышло из этого, но мне начали писать парни с целью ебли, некоторые предлогали деньги. И вот попался один довольно няшный кун. Вследствие чего я смог заработать 10к деревяных за ночь. Мне был окак-то все равно, что с мужиком и понял, что от этого нихуевый профит + этот кун какой-то финансовый директор. В общем списались, после созвонились и я приехал к концу рабочего дня к нему на работу, пили водку, разговаривали, он довольно умный, интересно было с ним болтать, там долго сидели. А скажу сразу, что я еблан и взял деньги только утром, то есть после моей работы, это была ммоя первая ошибка. Так что мы пили, разговаривали о политике, немного о религии, эволюцию, спорт и тому подобное,он еще аниму смотрит иногда и гоняет в старкрафт, через несколько часов мы поебались в каком-то конференц-зале, ничего особенного, ожидал большего, сисурити. Тут вторая была моя ошибка. что не сказал ему одеть гондон, кстати, сосать член довольно легко и не противно, тем более он относительно скорострел, так что после минут 5-7 я был сверху, потом снизу, так же мало чего чувствовал, ни боли, ни удовольствия, так наше соитие с ласками продолжались минут 20.После он засунл, я рядом в обнимку, довольно мило. После я проснулся и сидел за пекой у него и кушал. После он проснулся, я сказал про деньги, он мне их отдал и я пошел домой, он сказал, что вечером созвонимся. Щас мысль идет с него брать деньги + гулять и сидеть в кафе за его счет и тому подобное, ибо он при деньгах и довольно милый. Или же искать еще \"клиентов\".
Реквестую ваши стори о похождениях но  и спрашиваю советы, что и как дальше а действовать.
Пикрандом.";
/*
EOF 
;*/
$regExp = "/координально|сдесь|здела[лнюет]{1,2}|\\s+а\\s+|\\s+но\\s+|[,\\.!\\?:;][^\\s]|[a-яё]*жы|шы/iu"; 

$possibleErrors = array(
	                    "/координально/ui"        => "- Ошибка в слове \"кардинально\".",
	                    "/сдесь/ui"               => "- Не \"сдесь\", а \"здесь\".",
	                    "/здела[лнюет]{1,2}/ui"     => "- Приставки \"з\" нет в русском языке.",
	                    "/\\s+а\\s+/ui"           => "- Пропущена запятая перед союзом \"а\".",
	                    "/\\s+но\\s+/ui"          => "- Пропущена запятая перед союзом \"но\".",
	                    "/[a-яё]*жы|шы/ui"    => "\"- Жи-Ши\" пиши с \"и\"!",
	                    "/[,\\.!\\?:;][^\\s]/ui"  => "- Пропущен пробел после знака препинания."
	                    ); 
/*
$possibleErrors = array (
	                 1 => array ( "pattern" => "/координально/ui",        
	                 	         "message" => "- Ошибка в слове \"кардинально\"."
	                 	        ),
	                 2 => array ( "pattern" => "/сдесь/ui",
	                              "message" => "- Не \"сдесь\", а \"здесь\"."
	                            ),
	                 3 => array ( "pattern" => "/здела[лнюет]{1,2}/ui", 
	                              "message" => "- Приставки \"з\" нет в русском языке."
	                            ),   
	                 4 => array ( "pattern" => "/\\s+а\\s+/ui" , 
	                              "message" => "- Пропущена запятая перед союзом \"а\"."
	                            ),
	                 5 => array ( "pattern" => "/\\s+но\\s+/ui", 
	                             "message" => "- Пропущена запятая перед союзом \"но\"."
	                            ),   
	                 6 => array ( "pattern" => "/[,\\.!\\?:;][^\\s]/ui",
	                             "message" => "- Пропущен пробел после знака препинания."
	                            ),       
	                 7 => array ( "pattern" => "/[a-яё]*жы|шы/ui" , 
	                             "message" => "- \"Жи-Ши\" пиши с \"и\"!"
	                            ),            
	                     
	               ); */
$errs = array();

/*foreach ($possibleErrors as $pattern => $message) { */
	preg_match_all($regExp, $coolStory, $errs, PREG_OFFSET_CAPTURE);	
//}
/*foreach ($possibleErrors as $pattern => $message) {
	$matches = preg_grep($pattern, $errs);
}
*/
/*var_dump($errs); */
$matches = $errs[0];
var_dump($matches); 
$number = count($matches);
/*var_dump($number); */


 for ($i=0; $i < $number; $i++) {
 	/*echo $matches[$i][0] . " - "; */
 	foreach ($possibleErrors as $key => $value) {
 		/*echo $key . "\n"; */
 		if (preg_match($key, $matches[$i][0])) {
 			$position = $matches[$i][1] - 30;
 			/*echo $position."\n"; */
 			echo "...";
 			$context = mb_substr($coolStory, $position, 60);
 			echo $context ."\n";
 			echo "...";
 			echo $value;

 			break;
 			/*echo "\n Есть совпадение \n"; */
 	    } 
 	}
 }

/*
$matches = $errs[0];
$number = count($matches);
var_dump($number);

for ($i=0; $i < count($matches); $i++) {
    foreach ($possibleErrors as $pattern => $message) {
    	if (preg_match($pattern, $matches[$i][0])) {
    		echo "..." . mb_substr($coolStory, $matches[$i][1] - 10, 20) . "... $message \n";
    	}
    }
}
?>
*/
?>