<?php 
$offset = 10; // конфиг длины строки, которой дополняется место ошибки
// не могу придумать внятное имя
// впрочем для каждого вида ошибки он должен быть свой

$possibleErrors = [
	[
		'regExp' => "/.{0,{$offset}}\b\w+[,;!?:]\S+\b.{0,{$offset}}/ui",
		'descr' => 'Нет пробела после запятой, точки с запятой, восклицательного знака, '.
					'вопросительного знака, двоеточия.',
	],
	[
		'regExp' => "/.{0,{$offset}}\b\w*[жш]ы\w*\b.{0,{$offset}}/ui",
		'descr' => 'Жи/ши написано через "ы".',
	],
	[
		'regExp' => "/.{0,{$offset}}\bкоординально\b.{0,{$offset}}/ui",
		'descr' => 'Ошибка в слове "кардинально."',
	],
	[
		'regExp' => "/.{0,{$offset}}\b(сдесь|зделан|зделаю)\b.{0,{$offset}}/ui",
		'descr' => 'Неправильная приставка c-/з-.',
	],
	[
		'regExp' => "/.{0,{$offset}}[^,]\s\b(но|а)\b.{0,{$offset}}/ui",
		'descr' => 'Пропущена запятая перед предлогом "а" или "но".',
	],
];

$text = 'Тут координально пропущен пробел,после запятой но перед точкой'.
		'Слово пушыстый сдесь написано с ошыбкой.';

foreach ($possibleErrors as $error) {
	$matches = [];
	preg_match_all($error['regExp'], $text, $matches);
	foreach ($matches[0] as $match) {
		echo $error['descr'] . " Место с ошибкой: \n>> {$match}\n\n"; 
	}
}
