<?php

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

$coolStory = "Такая,знаете ли,мура получается с этим программированием;поначалу всё вроде шло хорошо!Даже замечательно! Но ведь в какой-то момент всегда начинаются проблемы, вы понимаете?А в этот раз они начались тогда,когда дошёл сначала до массивов;затем было сложно с циклами и массивами управляться сразу,но вполне ещё терпимо; потом вроде бы разобрался. Думаете -это легко для гуманитария? Для гуманитария, может быть, и легко, а для меня - нет. Мне как-то проще траллить технарей,чем стать на их уровень в программировании. У меня шырокий кругозор и шикарная жызненная позиция:непротивление насилию злом,но это, как ни странно, не помогает освоить программирование. Всё это весьма удручает,а также выбивает из колеи. А выбитый из колеи гуманитарий способен затралить любого,даже уравновешенного технаря-программиста на языке PHP. Это координально меняет ситуацию, описанную сдесь. Если же я зделаю всё так, как должно быть зделано, то все останутся целы.";

$regExp = "/(.{3,5}((\\,|\\;|\\!|\\?|\\:)[а-яё]).{3,5})|(.{3,5}((ж|ш)ы).{3,5})|(.{3,5}(координально|сдесь|(зде(лал|лаю|лано|лать))).{3,5})|(.{3,5}(\\,(а|но)).{3,5})/iu"; 

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

$errs = array();

preg_match_all($regExp, $coolStory, $errs, PREG_OFFSET_CAPTURE);	

$matches = $errs[0];

//var_dump($matches); 

$number = count($matches);

 for ($i=0; $i < $number; $i++) {

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

 	    } 
 	}
 }


?>