<?php
$text = <<<EOF
Разделите хлеб - здесь нет ошибок
a|b - здесь нет ошибок
Многоточие... - нет ошибок
Многовопросие?? - нет ошибок
Пропущена запятая но, вопрос, найдет ли это программа?
Нет точек над еще, вопрос, найдет ли это программа?
EOF;

$errors = [

    "/(ж|ш)ы/ui" => "Жи-Ши пиши через И",
    "/координально/ui" => "Правильно: кардинально",
    "/здел\\S+/ui" => "Правильно: сделать",
    "/сдесь/ui" => "Правильно: здесь",
    "/[.|!|\\?|,|:|;]\\S+/ui" => "После пунктуационных знаков ставится пробел",
    "/\\S+ (а|но) \\S+/" => "Перед союзами А и НО ставится запятая.",
    "/ еще /ui" => "Не хватает точек над буквой Ё",
];
$massivo = [];

foreach ($errors as $key => $explaining) {
    $errorcount = preg_match_all($key, $text, $massivo);

    foreach ($massivo[0] as $a)
    {
        echo "An error here: ...$a..., the rule is: '$explaining'.\n";
    }
}
