<?php

function printBytes($text)
{
	$hex = bin2hex($text);
	$bytes = str_split($hex, 2);
	return implode(" ", $bytes);
}

$text = 'Пожалуйста,никогда сделал зделал что ли чтоли что-ли не переходите по адресу а если вам дорог, а ваш рассудок!зааходите ложить лучше на  иметь ввиду имел ввиду но имело пожыво шыроки';

echo $text;

$arrayOfRegexps = [
	'/\S+(,|\.|;|:|\\?|!)[а-Я]+/' => "После точки, запятой, двоеточия, точки с запятой, восклицательного и вопросительного знаков нужно ставить пробел.",
	'/(И|и)ме(л(а|о|и)?|е(те?|шь|м)|ю(т|щ(ий|ая))?|й(те)?|ть)\sввиду/' => "«Ввиду» пишется слитно тогда, когда его можно заменить предлогом «из-за».",
	'/\S+(\.|\\?|!)(\s)?[а-я]+/' => "Предложение должно начинаться с большой буквы.",
	'/\S*(ж|ш)ы\S*/' => "«жи» «ши» пиши с «и».",
	'/(что|чуть|вряд)-?ли/' => "Частица «ли» всегда отделяется пробелом.",
	'/[^,]\s(а|но)\s\S*/' => "Перед союзами «а» и «но» нужно ставить запятую.",
	'/\sздел\S+/' => "Приставки «з» не существует.",
	'/\sлож(и(ть|л(и|а)?)?|ат)(\s|\.)/' => "Такого слова не существует, есть слово «класть»",
];

$matches = [];
$errorsCounter = 0;

foreach ($arrayOfRegexps as $regexp => $errorDescription)
{
	$errorsCounter += preg_match_all($regexp, $text, $matches);

	foreach ($matches[0] as $value) 
	{
		echo "\nЗдесь ошибка: " . printBytes($value) . "\nОписание: " . $errorDescription . "\n";
	}
}

echo "\nВсего найдено ошибок: {$errorsCounter}\n";
