<?php
function checkGrammar($string) {
    $regExp = [
        "/[а-яёА-ЯЁ]*(жы|шы)[а-яё]*/ui" => "жи/ши пиши через И",
        "/координально/ui" => "правильно писать кардинально",
        "/сдесь/ui" => "не \"сдесь\", а \"здесь\"",
        "/здела[летюн]{1,2}/ui" => "приставки \"з\" в русском языке нет",
        "/[а-яёА-ЯЁ0-9]+\s+а\s+/ui" => "пропущена запятая перед а",
        "/[а-яёА-ЯЁ0-9]+\s+но\s+/ui" => "пропущена запятая перед но",
        "/[.,!?;:]+[^\s]+/ui" => "пропущен пробел после знака препинания",
    ];
    $matches = [];
    $errorsMessages = [];

    foreach ($regExp as $pattern => $message) {
        if (preg_match_all($pattern, $string, $matches)) {
            foreach ($matches[0] as $word) {
                $stringPos = mb_strpos($string, $word);
                $stringBefore = mb_substr($string, $stringPos - 30, 30);
                $stringAfter = mb_substr($string, $stringPos + mb_strlen($word), 30);
                $errorsMessages[] = "Допущена ошибка: ...$stringBefore [$word] $stringAfter... ($message)";
            }
        }
    }

    if (empty($errorsMessages))
        return false;

    return $errorsMessages;
}

function fixGrammar($string) {
    $regExp = [
        "regExp" => [
            "/([Жж]|[Шш])ы/ui",
            "/координально/ui",
            "/сдесь/ui",
            "/(здела)([летюн]{1,2})/ui",
            "/([а-яёА-ЯЁ0-9]+)\s+(а|но)\s+/ui",
            "/([.,!?;:]+)([^\s])/ui"
        ],
        "replacement" => [
            "\$1и",
            "кардинально",
            "здесь",
            "сдела\$2",
            "\$1, \$2 ",
            "\$1 \$2"
        ]
    ];
    $fixString = preg_replace($regExp["regExp"], $regExp["replacement"], $string);

    if (!isset($fixString))
        return "Ошибок не найдено, нечего исправлять\n";

    return "Исправленный текст:\n$fixString";
}

$text = "Утра, анон. Жывотные Хочу принести тебе прохладную. В общем захотел координально я найти денег, нет, даже не так. Так сдесь как у меня никогда не было девушек, за зделают руку не держался, снимал только шлюх. Я решил зарегаться на мамбе и посмотреть там тянок. В общем ничего толком не вышло из этого, но мне начали писать парни с целью ебли, некоторые предлогали деньги. И вот попался один довольно няшный кун. Вследствие чего я смог заработать 10к деревяных за ночь. Мне было как-то все равно, что с мужиком и понял, что от этого нихуевый профит + этот кун какой-то финансовый директор. В общем списались, после созвонились и я приехал к концу рабочего дня к нему на работу, пили водку, разговаривали, он довольно умный, интересно было с ним болтать, там долго сидели. А скажу сразу, что я еблан и взял деньги только утром, то есть после моей работы, это была ммоя первая ошибка. Так что мы пили, разговаривали о политике, немного о религии, эволюцию, спорт и тому подобное,он еще аниму смотрит иногда и гоняет в старкрафт, через несколько часов мы поебались в каком-то конференц-зале, ничего особенного, ожидал большего, сисурити. Тут вторая была моя ошибка. что не сказал ему одеть гондон, кстати, сосать член довольно легко и не противно, тем более он относительно скорострел, так что после минут 5-7 я был сверху, потом снизу, так же мало чего чувствовал, ни боли, ни удовольствия, так наше соитие с ласками продолжались минут 20.После он засунл, я рядом в обнимку, довольно мило. После я проснулся и сидел за пекой у него и кушал. После он проснулся, я сказал про деньги, он мне их отдал и я пошел домой, он сказал, что вечером созвонимся. Щас мысль идет с него брать деньги + гулять и сидеть в кафе за его счет и тому подобное, ибо он при деньгах и довольно милый. Или же искать еще \"клиентов\". Реквестую ваши стори о похождениях но  и спрашиваю советы, что и как дальше а действовать. Пикрандом а так.";

if ($errors = checkGrammar($text)) {
    foreach ($errors as $error) {
        echo "$error\n";
    }
} else {
    echo "Ошибок не найдено\n";
}

echo fixGrammar($text);