<?php

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

$coolStory = "Координально сдесь.";

$regExp = '/координально|сдесь|здела[лнюет]{1,2}|\\s+а\\s+|\\s+но\\s+|[,\\.!\\?:;][^\\s]|[a-яё]*жы|шы/iu'; 

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

$errs = array(); /*Пустой массив, в который собираются ошибки*/

preg_match_all($regExp, $coolStory, $errs);	/*С помощью функции вытаскиваем регуляркой из текста все ошибки и заполняем ими массив $errs*/

$matches = $errs[0]; /*Определяем переменную для всех ошибок, вытащенных предыдущей функцией*/

$number = count($matches); /*Считаем количество ошибок в тексте*/

var_dump($matches);

for ($i=0; $i < $number; $i++) { /*Цикл для поиска ошибок с помощью отдельных регулярок (ключей) в массиве и вывода соответствующих регуляркам правил (значений в массиве)*/

    	if (preg_match($possibleErrors[$i]['pattern'], $matches[$i])) { /*Достаём из массива регулярку, подставляем её в функцию, проверяем найденные ошибки в массиве $matches на соответствие*/
    		$message = $possibleErrors[$i]['message']; /*Выводим соответствующее правило из массива (содержание)*/
    		$pattern = $matches[$i];
    		echo "{$pattern} и {$message}\n";;
    		echo "..." . mb_substr($coolStory, $matches[$i] - 10, 60) . "... $message \n";
    	}
    }

//var_dump($pattern);
//var_dump($message);
?>
