<?php
$text = <<<EOF
Как тебе наверно известно, многие люди, занимающие.государственные посты, тратят свои силы отнюдь не
на улучшение ситуации в своем городе или регионе,а на придумывание разнообразных схем по
перемещению вверенных им бюджетных средств в свои карманы!Например, государственные органы, которые хотят провести закупки, обязаны организовать
публичные торги и разместить?объявление о них на сайте госзакупок. Чтобы помешать всем жылающим участвовать
в тендере (и чтобы отдать заказ «своим людям» и получить потом от них в свой карман часть денег), они
заменяют в описании заказа некоторые:русские буквы на похожие на них латинские. Таким образом, не мышы
предупрежденные а заранее организации не смогут но найти объявление через поиск и принять участие в конкурсе. сдесь зделал
EOF
;
function findError( $text , $patternMsg ) {
foreach ( $matches as $value ) {
foreach ( $value as $value2 ) {
echo "{$value2} \t -\t {$patternMsg['msg']} \n " ;
}
}
echo "\n " ;
}
//нет пробела после запятой, точки с запятой, восклицательного знака, вопросительного знака, двоеточия
'pattern' => "/[.,!?:;]\w/ui" ,
'msg' => "После знаков припенания должен стоять пробел"
) ;
findError( $text , $patternMsg ) ;
//«жи» или «ши» написано с буквой ы
'pattern' => "/жы|шы/ui" ,
'msg' => "ЖИ ШИ"
) ;
findError( $text , $patternMsg ) ;
//в тексте есть слово «координально» или «сдесь», «зделал», «зделаю», «зделан»
'pattern' => "/сдесь|зделал|зделаю|зделан/ui" ,
'msg' => "Правописание приставок, оканчивающихся на буквы З и С"
) ;
findError( $text , $patternMsg ) ;
//в тексте есть слова «а» или «но» без запятой перед ними.
'pattern' => "/\b\s\bа\b/u" ,
'msg' => "«а» или «но» без запятой перед ними"
) ;
findError( $text , $patternMsg ) ;
//в тексте есть слова «а» или «но» без запятой перед ними.
'pattern' => "/\b\s\bно\b/u" ,
'msg' => "«а» или «но» без запятой перед ними"
) ;
findError( $text , $patternMsg ) ;
?>
PD9waHAKCWVycm9yX3JlcG9ydGluZygtMSk7CgltYl9pbnRlcm5hbF9lbmNvZGluZygndXRmLTgnKTsKCQoJCiR0ZXh0ID0gPDw8RU9GCtCa0LDQuiDRgtC10LHQtSDQvdCw0LLQtdGA0L3QviDQuNC30LLQtdGB0YLQvdC+LCDQvNC90L7Qs9C40LUg0LvRjtC00LgsINC30LDQvdC40LzQsNGO0YnQuNC1LtCz0L7RgdGD0LTQsNGA0YHRgtCy0LXQvdC90YvQtSDQv9C+0YHRgtGLLCDRgtGA0LDRgtGP0YIg0YHQstC+0Lgg0YHQuNC70Ysg0L7RgtC90Y7QtNGMINC90LUK0L3QsCDRg9C70YPRh9GI0LXQvdC40LUg0YHQuNGC0YPQsNGG0LjQuCDQsiDRgdCy0L7QtdC8INCz0L7RgNC+0LTQtSDQuNC70Lgg0YDQtdCz0LjQvtC90LUs0LAg0L3QsCDQv9GA0LjQtNGD0LzRi9Cy0LDQvdC40LUg0YDQsNC30L3QvtC+0LHRgNCw0LfQvdGL0YUg0YHRhdC10Lwg0L/QvgrQv9C10YDQtdC80LXRidC10L3QuNGOINCy0LLQtdGA0LXQvdC90YvRhSDQuNC8INCx0Y7QtNC20LXRgtC90YvRhSDRgdGA0LXQtNGB0YLQsiDQsiDRgdCy0L7QuCDQutCw0YDQvNCw0L3RiyHQndCw0L/RgNC40LzQtdGALCDQs9C+0YHRg9C00LDRgNGB0YLQstC10L3QvdGL0LUg0L7RgNCz0LDQvdGLLCDQutC+0YLQvtGA0YvQtSDRhdC+0YLRj9GCINC/0YDQvtCy0LXRgdGC0Lgg0LfQsNC60YPQv9C60LgsINC+0LHRj9C30LDQvdGLINC+0YDQs9Cw0L3QuNC30L7QstCw0YLRjArQv9GD0LHQu9C40YfQvdGL0LUg0YLQvtGA0LPQuCDQuCDRgNCw0LfQvNC10YHRgtC40YLRjD/QvtCx0YrRj9Cy0LvQtdC90LjQtSDQviDQvdC40YUg0L3QsCDRgdCw0LnRgtC1INCz0L7RgdC30LDQutGD0L/QvtC6LiDQp9GC0L7QsdGLINC/0L7QvNC10YjQsNGC0Ywg0LLRgdC10Lwg0LbRi9C70LDRjtGJ0LjQvCDRg9GH0LDRgdGC0LLQvtCy0LDRgtGMCtCyINGC0LXQvdC00LXRgNC1ICjQuCDRh9GC0L7QsdGLINC+0YLQtNCw0YLRjCDQt9Cw0LrQsNC3IMKr0YHQstC+0LjQvCDQu9GO0LTRj9C8wrsg0Lgg0L/QvtC70YPRh9C40YLRjCDQv9C+0YLQvtC8INC+0YIg0L3QuNGFINCyINGB0LLQvtC5INC60LDRgNC80LDQvSDRh9Cw0YHRgtGMINC00LXQvdC10LMpLCDQvtC90LgK0LfQsNC80LXQvdGP0Y7RgiDQsiDQvtC/0LjRgdCw0L3QuNC4INC30LDQutCw0LfQsCDQvdC10LrQvtGC0L7RgNGL0LU60YDRg9GB0YHQutC40LUg0LHRg9C60LLRiyDQvdCwINC/0L7RhdC+0LbQuNC1INC90LAg0L3QuNGFINC70LDRgtC40L3RgdC60LjQtS4g0KLQsNC60LjQvCDQvtCx0YDQsNC30L7QvCwg0L3QtSDQvNGL0YjRiwrQv9GA0LXQtNGD0L/RgNC10LbQtNC10L3QvdGL0LUg0LAg0LfQsNGA0LDQvdC10LUg0L7RgNCz0LDQvdC40LfQsNGG0LjQuCDQvdC1INGB0LzQvtCz0YPRgiDQvdC+INC90LDQudGC0Lgg0L7QsdGK0Y/QstC70LXQvdC40LUg0YfQtdGA0LXQtyDQv9C+0LjRgdC6INC4INC/0YDQuNC90Y/RgtGMINGD0YfQsNGB0YLQuNC1INCyINC60L7QvdC60YPRgNGB0LUuINGB0LTQtdGB0Ywg0LfQtNC10LvQsNC7CkVPRgo7CgoJZnVuY3Rpb24gZmluZEVycm9yKCR0ZXh0LCAkcGF0dGVybk1zZykgewoJCXByZWdfbWF0Y2hfYWxsKCRwYXR0ZXJuTXNnWydwYXR0ZXJuJ10sICR0ZXh0LCAkbWF0Y2hlcyk7CgkJZm9yZWFjaCgkbWF0Y2hlcyBhcyAkdmFsdWUpewoJCQlmb3JlYWNoKCR2YWx1ZSBhcyAkdmFsdWUyKXsKCQkJCWVjaG8gInskdmFsdWUyfVx0LVx0eyRwYXR0ZXJuTXNnWydtc2cnXX1cbiI7CgkJCX0KCQl9CgkJZWNobyAiXG4iOwoJfQoJCgkkbWF0Y2hlcyA9IGFycmF5KCk7CgkKCS8v0L3QtdGCINC/0YDQvtCx0LXQu9CwINC/0L7RgdC70LUg0LfQsNC/0Y/RgtC+0LksINGC0L7Rh9C60Lgg0YEg0LfQsNC/0Y/RgtC+0LksINCy0L7RgdC60LvQuNGG0LDRgtC10LvRjNC90L7Qs9C+INC30L3QsNC60LAsINCy0L7Qv9GA0L7RgdC40YLQtdC70YzQvdC+0LPQviDQt9C90LDQutCwLCDQtNCy0L7QtdGC0L7Rh9C40Y8KCSRwYXR0ZXJuTXNnID0gYXJyYXkgKAoJCSdwYXR0ZXJuJyA9PiAiL1suLCE/OjtdXHcvdWkiLAoJCSdtc2cnID0+ICLQn9C+0YHQu9C1INC30L3QsNC60L7QsiDQv9GA0LjQv9C10L3QsNC90LjRjyDQtNC+0LvQttC10L0g0YHRgtC+0Y/RgtGMINC/0YDQvtCx0LXQuyIKCSk7CglmaW5kRXJyb3IoJHRleHQsICRwYXR0ZXJuTXNnKTsKCQoJLy/Cq9C20LjCuyDQuNC70LggwqvRiNC4wrsg0L3QsNC/0LjRgdCw0L3QviDRgSDQsdGD0LrQstC+0Lkg0YsKCSRwYXR0ZXJuTXNnID0gYXJyYXkgKAoJCSdwYXR0ZXJuJyA9PiAiL9C20Yt80YjRiy91aSIsCgkJJ21zZycgPT4gItCW0Jgg0KjQmCIKCSk7CglmaW5kRXJyb3IoJHRleHQsICRwYXR0ZXJuTXNnKTsKCQoJLy/QsiDRgtC10LrRgdGC0LUg0LXRgdGC0Ywg0YHQu9C+0LLQviDCq9C60L7QvtGA0LTQuNC90LDQu9GM0L3QvsK7INC40LvQuCDCq9GB0LTQtdGB0YzCuywgwqvQt9C00LXQu9Cw0LvCuywgwqvQt9C00LXQu9Cw0Y7CuywgwqvQt9C00LXQu9Cw0L3CuwoJJHBhdHRlcm5Nc2cgPSBhcnJheSAoCgkJJ3BhdHRlcm4nID0+ICIv0YHQtNC10YHRjHzQt9C00LXQu9Cw0Lt80LfQtNC10LvQsNGOfNC30LTQtdC70LDQvS91aSIsCgkJJ21zZycgPT4gItCf0YDQsNCy0L7Qv9C40YHQsNC90LjQtSDQv9GA0LjRgdGC0LDQstC+0LosINC+0LrQsNC90YfQuNCy0LDRjtGJ0LjRhdGB0Y8g0L3QsCDQsdGD0LrQstGLINCXINC4INChIgoJKTsKCWZpbmRFcnJvcigkdGV4dCwgJHBhdHRlcm5Nc2cpOwoJCgkvL9CyINGC0LXQutGB0YLQtSDQtdGB0YLRjCDRgdC70L7QstCwIMKr0LDCuyDQuNC70LggwqvQvdC+wrsg0LHQtdC3INC30LDQv9GP0YLQvtC5INC/0LXRgNC10LQg0L3QuNC80LguCgkkcGF0dGVybk1zZyA9IGFycmF5ICgKCQkncGF0dGVybicgPT4gIi9cYlxzXGLQsFxiL3UiLAoJCSdtc2cnID0+ICLCq9Cwwrsg0LjQu9C4IMKr0L3QvsK7INCx0LXQtyDQt9Cw0L/Rj9GC0L7QuSDQv9C10YDQtdC0INC90LjQvNC4IgoJKTsKCWZpbmRFcnJvcigkdGV4dCwgJHBhdHRlcm5Nc2cpOwoJCgkvL9CyINGC0LXQutGB0YLQtSDQtdGB0YLRjCDRgdC70L7QstCwIMKr0LDCuyDQuNC70LggwqvQvdC+wrsg0LHQtdC3INC30LDQv9GP0YLQvtC5INC/0LXRgNC10LQg0L3QuNC80LguCgkkcGF0dGVybk1zZyA9IGFycmF5ICgKCQkncGF0dGVybicgPT4gIi9cYlxzXGLQvdC+XGIvdSIsCgkJJ21zZycgPT4gIsKr0LDCuyDQuNC70LggwqvQvdC+wrsg0LHQtdC3INC30LDQv9GP0YLQvtC5INC/0LXRgNC10LQg0L3QuNC80LgiCgkpOwoJZmluZEVycm9yKCR0ZXh0LCAkcGF0dGVybk1zZyk7Cj8+