<?php
header ( "Content-Type: text/plain" ) ;
// Текст:
$text = <<<EOF
нет пробела после запятой,точки с запятой;восклицательного знака!вопросительного знака?двоеточия:
«жы» или «шы» написано с буквой ы,
в тексте есть слово «координально» или «сдесь», «зделал», «зделаю», «зделан»
в тексте есть слова а или но без запятой перед ними.
EOF
;
// Массив патернов поиска и описаний и исправлений ошибок
array ( 'regexp' => '/(\\S+)(,|;|!|[?]|:)(\\S+)/u' , 'explain' => 'нет обязательного пробела после «.,!?;:»' , 'replace' => '$1$2 $3' ) , array ( 'regexp' => '/(\\S*)([ ]*)(\\S*)(ж|ш)ы(\\S*)([ ]*)(\\S*)/u' , 'explain' => '«жи» или «ши» написано с буквой ы' , 'replace' => '$1$2$3$4и$5$6$7' ) , array ( 'regexp' => '/(координально)/u' , 'explain' => 'орфографические ошибки в словах' , 'replace' => 'кардинально' ) , array ( 'regexp' => '/(сдесь)/u' , 'explain' => 'орфографическая ошибка №1 в слове' , 'replace' => 'здесь' ) , array ( 'regexp' => '/(здела)(\\w+)/u' , 'explain' => 'орфографическая ошибка №2 в слове' , 'replace' => 'сдела' ) , array ( 'regexp' => '/(\\S*)([^,])([ ])(но|а)(\\s)/u' , 'explain' => 'союзы А или НО без запятой перед ними' , 'replace' => '$1$2,$3$4$5' ) ) ;
// Выводим кусок текста с ошибкой
foreach ( $regexpArray as $key => $value ) {
if ( preg_match_all ( $regexpArray [ $key ] [ 'regexp' ] , $text , $result , PREG_SET_ORDER
) ) {
echo "\n Ошибка: {$regexpArray [$key ]['explain']}\n " ;
foreach ( $result as $e ) {
echo "*{$e[0]} *\n " ;
}
}
}
// Исправляем ошибки в тексте
foreach ( $regexpArray as $key => $value ) {
$text = preg_replace ( $regexpArray [ $key ] [ 'regexp' ] , $regexpArray [ $key ] [ 'replace' ] , $text ) ; }
echo "\n Исправленный текст:\n {$text} " ;
?>
PD9waHAKaGVhZGVyKCJDb250ZW50LVR5cGU6IHRleHQvcGxhaW4iKTsKbWJfaW50ZXJuYWxfZW5jb2RpbmcoJ3V0Zi04Jyk7CgovLyDQotC10LrRgdGCOiAKJHRleHQgPSA8PDxFT0YK0L3QtdGCINC/0YDQvtCx0LXQu9CwINC/0L7RgdC70LUg0LfQsNC/0Y/RgtC+0Lks0YLQvtGH0LrQuCDRgSDQt9Cw0L/Rj9GC0L7QuTvQstC+0YHQutC70LjRhtCw0YLQtdC70YzQvdC+0LPQviDQt9C90LDQutCwIdCy0L7Qv9GA0L7RgdC40YLQtdC70YzQvdC+0LPQviDQt9C90LDQutCwP9C00LLQvtC10YLQvtGH0LjRjzoKwqvQttGLwrsg0LjQu9C4IMKr0YjRi8K7INC90LDQv9C40YHQsNC90L4g0YEg0LHRg9C60LLQvtC5INGLLArQsiDRgtC10LrRgdGC0LUg0LXRgdGC0Ywg0YHQu9C+0LLQviDCq9C60L7QvtGA0LTQuNC90LDQu9GM0L3QvsK7INC40LvQuCDCq9GB0LTQtdGB0YzCuywgwqvQt9C00LXQu9Cw0LvCuywgwqvQt9C00LXQu9Cw0Y7CuywgwqvQt9C00LXQu9Cw0L3CuwrQsiDRgtC10LrRgdGC0LUg0LXRgdGC0Ywg0YHQu9C+0LLQsCDQsCDQuNC70Lgg0L3QviDQsdC10Lcg0LfQsNC/0Y/RgtC+0Lkg0L/QtdGA0LXQtCDQvdC40LzQuC4KRU9GCjsKCi8vINCc0LDRgdGB0LjQsiDQv9Cw0YLQtdGA0L3QvtCyINC/0L7QuNGB0LrQsCDQuCDQvtC/0LjRgdCw0L3QuNC5INC4INC40YHQv9GA0LDQstC70LXQvdC40Lkg0L7RiNC40LHQvtC6CiRyZWdleHBBcnJheSA9IGFycmF5KAogICAgICAgIGFycmF5KCdyZWdleHAnID0+ICcvKFxcUyspKCx8O3whfFs/XXw6KShcXFMrKS91JywgJ2V4cGxhaW4nID0+ICfQvdC10YIg0L7QsdGP0LfQsNGC0LXQu9GM0L3QvtCz0L4g0L/RgNC+0LHQtdC70LAg0L/QvtGB0LvQtSDCqy4sIT87OsK7JywgJ3JlcGxhY2UnID0+ICckMSQyICQzJyksCiAgICAgICAgYXJyYXkoJ3JlZ2V4cCcgPT4gJy8oXFxTKikoWyBdKikoXFxTKiko0LZ80Ygp0YsoXFxTKikoWyBdKikoXFxTKikvdScsICdleHBsYWluJyA9PiAnwqvQttC4wrsg0LjQu9C4IMKr0YjQuMK7INC90LDQv9C40YHQsNC90L4g0YEg0LHRg9C60LLQvtC5INGLJywgJ3JlcGxhY2UnID0+ICckMSQyJDMkNNC4JDUkNiQ3JyksCiAgICAgICAgYXJyYXkoJ3JlZ2V4cCcgPT4gJy8o0LrQvtC+0YDQtNC40L3QsNC70YzQvdC+KS91JywgJ2V4cGxhaW4nID0+ICfQvtGA0YTQvtCz0YDQsNGE0LjRh9C10YHQutC40LUg0L7RiNC40LHQutC4INCyINGB0LvQvtCy0LDRhScsICdyZXBsYWNlJyA9PiAn0LrQsNGA0LTQuNC90LDQu9GM0L3QvicpLAogICAgICAgIGFycmF5KCdyZWdleHAnID0+ICcvKNGB0LTQtdGB0YwpL3UnLCAnZXhwbGFpbicgPT4gJ9C+0YDRhNC+0LPRgNCw0YTQuNGH0LXRgdC60LDRjyDQvtGI0LjQsdC60LAg4oSWMSDQsiDRgdC70L7QstC1JywgJ3JlcGxhY2UnID0+ICfQt9C00LXRgdGMJyksCiAgICAgICAgYXJyYXkoJ3JlZ2V4cCcgPT4gJy8o0LfQtNC10LvQsCkoXFx3KykvdScsICdleHBsYWluJyA9PiAn0L7RgNGE0L7Qs9GA0LDRhNC40YfQtdGB0LrQsNGPINC+0YjQuNCx0LrQsCDihJYyINCyINGB0LvQvtCy0LUnLCAncmVwbGFjZScgPT4gJ9GB0LTQtdC70LAnKSwKICAgICAgICBhcnJheSgncmVnZXhwJyA9PiAnLyhcXFMqKShbXixdKShbIF0pKNC90L580LApKFxccykvdScsICdleHBsYWluJyA9PiAn0YHQvtGO0LfRiyDQkCDQuNC70Lgg0J3QniDQsdC10Lcg0LfQsNC/0Y/RgtC+0Lkg0L/QtdGA0LXQtCDQvdC40LzQuCcsICdyZXBsYWNlJyA9PiAnJDEkMiwkMyQ0JDUnKQogICAgICAgICk7CgovLyDQktGL0LLQvtC00LjQvCDQutGD0YHQvtC6INGC0LXQutGB0YLQsCDRgSDQvtGI0LjQsdC60L7QuSAgCmZvcmVhY2ggKCRyZWdleHBBcnJheSBhcyAka2V5ID0+ICR2YWx1ZSkgeyAgICAgICAKICAgIAogICAgaWYgKHByZWdfbWF0Y2hfYWxsKCRyZWdleHBBcnJheVska2V5XVsncmVnZXhwJ10sICR0ZXh0LCAkcmVzdWx0LCBQUkVHX1NFVF9PUkRFUikpIHsKICAgICAgICAgICAgCiAgICAgICAgZWNobyAiXG7QntGI0LjQsdC60LA6IHskcmVnZXhwQXJyYXlbJGtleV1bJ2V4cGxhaW4nXX1cbiI7CiAgICAgICAgICAgIAogICAgICAgIGZvcmVhY2ggKCRyZXN1bHQgYXMgJGUpIHsKICAgICAgICAgICAgZWNobyAiKnskZVswXX0qXG4iOyAgICAgICAgICAgICAgIAogICAgICAgIH0KICAgIH0gICAgCn0KCi8vINCY0YHQv9GA0LDQstC70Y/QtdC8INC+0YjQuNCx0LrQuCDQsiDRgtC10LrRgdGC0LUKZm9yZWFjaCAoJHJlZ2V4cEFycmF5IGFzICRrZXkgPT4gJHZhbHVlKSB7CiAgICAkdGV4dCA9IHByZWdfcmVwbGFjZSAoJHJlZ2V4cEFycmF5WyRrZXldWydyZWdleHAnXSwgJHJlZ2V4cEFycmF5WyRrZXldWydyZXBsYWNlJ10sICR0ZXh0KTsKfQplY2hvICJcbtCY0YHQv9GA0LDQstC70LXQvdC90YvQuSDRgtC10LrRgdGCOlxueyR0ZXh0fSI7Cj8+Cg==