<?php
$text = "ну что. не смотрел еще black mesa.я собирался скачать ,но все как-то некогда было.";
// Для тестов
// $text = 'roses are red,and violets are blue.whatever you do i'll keep it for you.';
// $text = 'привет.есть 2 функции,preg_split и explode ,не понимаю,в чем между ними разница.';
$regexpCut = '/[\\.!?\\.\\.\\.]\\s*/ui';
$bigRegexp = array('/([а-яёa-z]?)(\\.|!|\\?|\\.\\.\\.)([а-яёa-z]?)/ui', '/(\\s*)(,)([а-яёa-z]?)/ui', '/\\s\\s*/ui'); $bigReplacement = array('$1$2 $3', '$2 $3', ' ');
/* Делает первую букву в строке заглавной */
function makeFirstLetterUppercase($text, $regexpCut, $bigRegexp, $bigReplacement) {
/*Создаёт пустой массив для последующего наполнения готовыми предложениями; обязательно в самом начале функции*/
$rightSentences = array(); /*Разбивает текст на предложения*/
/*Цикл для разложения массива на ключи и значения*/
foreach ($cutTheText as $keys => $sentence) {
/*Функция для нахождения первых букв в предложениях*/
$findTheFirstLetters = mb_substr($sentence, 0, 1); /*Функция для перевода первых букв в предложених в верхний регистр*/
/*Функция для подсчёта всех букв во всех предложениях текста - чтобы получить число, больше которого не может быть букв в предложениях текста*/
$countAllTheLetters = mb_strlen($text, "UTF-8"); /*Функция для обрезания начальных букв в нижнем регистре у всех предложений текста*/
$cutTheLittleFirstLetters = mb_substr($sentence, 1, $countAllTheLetters); /*Конкатенация увеличенных первых букв в предложениях и обрезанных кусков предложений без первых букв*/
$theRightSentence = $upTheFirstLetters. $cutTheLittleFirstLetters;
/*Заполняет пустой массив получившимися предложениями; далее следует возврат получившегося*/
}
return $rightSentences;
}
/* исправляет текст */
function fixText($text, $regexpCut, $bigRegexp, $bigReplacement) {
/*Вызывает функцию для смены регистра у начальных букв во всех предложениях*/
$rightSentences = makeFirstLetterUppercase($text, $regexpCut, $bigRegexp, $bigReplacement);
/*Склеивает предложения из массива в строку, разделяя их точкой и пробелом*/
$implodeOnlyRightSentences = implode('. ', $rightSentences); /*Необязательная переменная для удобства слежения за работой кода*/
$cleanRightSentences = $implodeOnlyRightSentences;
/*Замена ошибок в тексте на правильные варианты с последующим возвратом готового варианта*/
$cleanRightSentences = preg_replace($bigRegexp, $bigReplacement, $cleanRightSentences); return $cleanRightSentences;
}
/*Вызов функции для исправления текста, старт работы скрипта*/
$result = fixText($text, $regexpCut, $bigRegexp, $bigReplacement);
echo "{$result}\n";
?>
PD9waHAKCmVycm9yX3JlcG9ydGluZygtMSk7Cm1iX2ludGVybmFsX2VuY29kaW5nKCd1dGYtOCcpOwoKJHRleHQgPSAi0L3RgyDRh9GC0L4uICAgICAg0L3QtSDRgdC80L7RgtGA0LXQuyDQtdGJ0LUgYmxhY2sgbWVzYS7RjyDRgdC+0LHQuNGA0LDQu9GB0Y8g0YHQutCw0YfQsNGC0YwgICzQvdC+INCy0YHQtSDQutCw0Lot0YLQviDQvdC10LrQvtCz0LTQsCDQsdGL0LvQvi4iOwovLyDQlNC70Y8g0YLQtdGB0YLQvtCyCi8vICR0ZXh0ID0gJ3Jvc2VzIGFyZSByZWQsYW5kIHZpb2xldHMgYXJlIGJsdWUud2hhdGV2ZXIgeW91IGRvIGknbGwga2VlcCBpdCBmb3IgeW91Lic7Ci8vICR0ZXh0ID0gJ9C/0YDQuNCy0LXRgi7QtdGB0YLRjCAyINGE0YPQvdC60YbQuNC4LHByZWdfc3BsaXQg0LggZXhwbG9kZSAs0L3QtSDQv9C+0L3QuNC80LDRjizQsiDRh9C10Lwg0LzQtdC20LTRgyDQvdC40LzQuCDRgNCw0LfQvdC40YbQsC4nOwokcmVnZXhwQ3V0ID0gJy9bXFwuIT9cXC5cXC5cXC5dXFxzKi91aSc7CiRiaWdSZWdleHAgPSBhcnJheSgnLyhb0LAt0Y/RkWEtel0/KShcXC58IXxcXD98XFwuXFwuXFwuKShb0LAt0Y/RkWEtel0/KS91aScsICcvKFxccyopKCwpKFvQsC3Rj9GRYS16XT8pL3VpJywgJy9cXHNcXHMqL3VpJyk7CiRiaWdSZXBsYWNlbWVudCA9IGFycmF5KCckMSQyICQzJywgJyQyICQzJywgJyAnKTsKCi8qINCU0LXQu9Cw0LXRgiDQv9C10YDQstGD0Y4g0LHRg9C60LLRgyDQsiDRgdGC0YDQvtC60LUg0LfQsNCz0LvQsNCy0L3QvtC5ICovCmZ1bmN0aW9uIG1ha2VGaXJzdExldHRlclVwcGVyY2FzZSgkdGV4dCwgJHJlZ2V4cEN1dCwgJGJpZ1JlZ2V4cCwgJGJpZ1JlcGxhY2VtZW50KSB7CgkvKtCh0L7Qt9C00LDRkdGCINC/0YPRgdGC0L7QuSDQvNCw0YHRgdC40LIg0LTQu9GPINC/0L7RgdC70LXQtNGD0Y7RidC10LPQviDQvdCw0L/QvtC70L3QtdC90LjRjyDQs9C+0YLQvtCy0YvQvNC4INC/0YDQtdC00LvQvtC20LXQvdC40Y/QvNC4OyDQvtCx0Y/Qt9Cw0YLQtdC70YzQvdC+INCyINGB0LDQvNC+0Lwg0L3QsNGH0LDQu9C1INGE0YPQvdC60YbQuNC4Ki8KCSRyaWdodFNlbnRlbmNlcyA9IGFycmF5KCk7CgkvKtCg0LDQt9Cx0LjQstCw0LXRgiDRgtC10LrRgdGCINC90LAg0L/RgNC10LTQu9C+0LbQtdC90LjRjyovCiAgICAkY3V0VGhlVGV4dCA9IHByZWdfc3BsaXQoJHJlZ2V4cEN1dCwgJHRleHQpOyAKICAgIC8q0KbQuNC60Lsg0LTQu9GPINGA0LDQt9C70L7QttC10L3QuNGPINC80LDRgdGB0LjQstCwINC90LAg0LrQu9GO0YfQuCDQuCDQt9C90LDRh9C10L3QuNGPKi8KICAgIGZvcmVhY2ggKCRjdXRUaGVUZXh0IGFzICRrZXlzID0+ICRzZW50ZW5jZSkgeyAKICAgIC8q0KTRg9C90LrRhtC40Y8g0LTQu9GPINC90LDRhdC+0LbQtNC10L3QuNGPINC/0LXRgNCy0YvRhSDQsdGD0LrQsiDQsiDQv9GA0LXQtNC70L7QttC10L3QuNGP0YUqLwogICAgJGZpbmRUaGVGaXJzdExldHRlcnMgPSBtYl9zdWJzdHIoJHNlbnRlbmNlLCAwLCAxKTsgCiAgICAvKtCk0YPQvdC60YbQuNGPINC00LvRjyDQv9C10YDQtdCy0L7QtNCwINC/0LXRgNCy0YvRhSDQsdGD0LrQsiDQsiDQv9GA0LXQtNC70L7QttC10L3QuNGFINCyINCy0LXRgNGF0L3QuNC5INGA0LXQs9C40YHRgtGAKi8KICAgICR1cFRoZUZpcnN0TGV0dGVycyA9IG1iX3N0cnRvdXBwZXIoJGZpbmRUaGVGaXJzdExldHRlcnMpOwogICAgLyrQpNGD0L3QutGG0LjRjyDQtNC70Y8g0L/QvtC00YHRh9GR0YLQsCDQstGB0LXRhSDQsdGD0LrQsiDQstC+INCy0YHQtdGFINC/0YDQtdC00LvQvtC20LXQvdC40Y/RhSDRgtC10LrRgdGC0LAgLSDRh9GC0L7QsdGLINC/0L7Qu9GD0YfQuNGC0Ywg0YfQuNGB0LvQviwg0LHQvtC70YzRiNC1INC60L7RgtC+0YDQvtCz0L4g0L3QtSDQvNC+0LbQtdGCINCx0YvRgtGMINCx0YPQutCyINCyINC/0YDQtdC00LvQvtC20LXQvdC40Y/RhSDRgtC10LrRgdGC0LAqLwogICAgJGNvdW50QWxsVGhlTGV0dGVycyA9IG1iX3N0cmxlbigkdGV4dCwgIlVURi04Iik7CiAgICAvKtCk0YPQvdC60YbQuNGPINC00LvRjyDQvtCx0YDQtdC30LDQvdC40Y8g0L3QsNGH0LDQu9GM0L3Ri9GFINCx0YPQutCyINCyINC90LjQttC90LXQvCDRgNC10LPQuNGB0YLRgNC1INGDINCy0YHQtdGFINC/0YDQtdC00LvQvtC20LXQvdC40Lkg0YLQtdC60YHRgtCwKi8KICAgICRjdXRUaGVMaXR0bGVGaXJzdExldHRlcnMgPSBtYl9zdWJzdHIoJHNlbnRlbmNlLCAxLCAkY291bnRBbGxUaGVMZXR0ZXJzKTsKICAgIC8q0JrQvtC90LrQsNGC0LXQvdCw0YbQuNGPINGD0LLQtdC70LjRh9C10L3QvdGL0YUg0L/QtdGA0LLRi9GFINCx0YPQutCyINCyINC/0YDQtdC00LvQvtC20LXQvdC40Y/RhSDQuCDQvtCx0YDQtdC30LDQvdC90YvRhSDQutGD0YHQutC+0LIg0L/RgNC10LTQu9C+0LbQtdC90LjQuSDQsdC10Lcg0L/QtdGA0LLRi9GFINCx0YPQutCyKi8KICAgICR0aGVSaWdodFNlbnRlbmNlID0gJHVwVGhlRmlyc3RMZXR0ZXJzLiAkY3V0VGhlTGl0dGxlRmlyc3RMZXR0ZXJzOwogICAgLyrQl9Cw0L/QvtC70L3Rj9C10YIg0L/Rg9GB0YLQvtC5INC80LDRgdGB0LjQsiDQv9C+0LvRg9GH0LjQstGI0LjQvNC40YHRjyDQv9GA0LXQtNC70L7QttC10L3QuNGP0LzQuDsg0LTQsNC70LXQtSDRgdC70LXQtNGD0LXRgiDQstC+0LfQstGA0LDRgiDQv9C+0LvRg9GH0LjQstGI0LXQs9C+0YHRjyovCiAgICBhcnJheV9wdXNoKCRyaWdodFNlbnRlbmNlcywgJHRoZVJpZ2h0U2VudGVuY2UpOyAKICAgIH0KICAgIHJldHVybiAkcmlnaHRTZW50ZW5jZXM7Cn0gCgovKiDQuNGB0L/RgNCw0LLQu9GP0LXRgiDRgtC10LrRgdGCICovCmZ1bmN0aW9uIGZpeFRleHQoJHRleHQsICRyZWdleHBDdXQsICRiaWdSZWdleHAsICRiaWdSZXBsYWNlbWVudCkgewoJLyrQktGL0LfRi9Cy0LDQtdGCINGE0YPQvdC60YbQuNGOINC00LvRjyDRgdC80LXQvdGLINGA0LXQs9C40YHRgtGA0LAg0YMg0L3QsNGH0LDQu9GM0L3Ri9GFINCx0YPQutCyINCy0L4g0LLRgdC10YUg0L/RgNC10LTQu9C+0LbQtdC90LjRj9GFKi8KICAgICRyaWdodFNlbnRlbmNlcyA9IG1ha2VGaXJzdExldHRlclVwcGVyY2FzZSgkdGV4dCwgJHJlZ2V4cEN1dCwgJGJpZ1JlZ2V4cCwgJGJpZ1JlcGxhY2VtZW50KTsKICAgIC8q0KHQutC70LXQuNCy0LDQtdGCINC/0YDQtdC00LvQvtC20LXQvdC40Y8g0LjQtyDQvNCw0YHRgdC40LLQsCDQsiDRgdGC0YDQvtC60YMsINGA0LDQt9C00LXQu9GP0Y8g0LjRhSDRgtC+0YfQutC+0Lkg0Lgg0L/RgNC+0LHQtdC70L7QvCovCiAgICAkaW1wbG9kZU9ubHlSaWdodFNlbnRlbmNlcyA9IGltcGxvZGUoJy4gJywgJHJpZ2h0U2VudGVuY2VzKTsKICAgIC8q0J3QtdC+0LHRj9C30LDRgtC10LvRjNC90LDRjyDQv9C10YDQtdC80LXQvdC90LDRjyDQtNC70Y8g0YPQtNC+0LHRgdGC0LLQsCDRgdC70LXQttC10L3QuNGPINC30LAg0YDQsNCx0L7RgtC+0Lkg0LrQvtC00LAqLwogICAgJGNsZWFuUmlnaHRTZW50ZW5jZXMgPSAkaW1wbG9kZU9ubHlSaWdodFNlbnRlbmNlczsKICAgIC8q0JfQsNC80LXQvdCwINC+0YjQuNCx0L7QuiDQsiDRgtC10LrRgdGC0LUg0L3QsCDQv9GA0LDQstC40LvRjNC90YvQtSDQstCw0YDQuNCw0L3RgtGLINGBINC/0L7RgdC70LXQtNGD0Y7RidC40Lwg0LLQvtC30LLRgNCw0YLQvtC8INCz0L7RgtC+0LLQvtCz0L4g0LLQsNGA0LjQsNC90YLQsCovCiAgICAkY2xlYW5SaWdodFNlbnRlbmNlcyA9IHByZWdfcmVwbGFjZSgkYmlnUmVnZXhwLCAkYmlnUmVwbGFjZW1lbnQsICRjbGVhblJpZ2h0U2VudGVuY2VzKTsKICAgICAgICByZXR1cm4gJGNsZWFuUmlnaHRTZW50ZW5jZXM7Cn0KLyrQktGL0LfQvtCyINGE0YPQvdC60YbQuNC4INC00LvRjyDQuNGB0L/RgNCw0LLQu9C10L3QuNGPINGC0LXQutGB0YLQsCwg0YHRgtCw0YDRgiDRgNCw0LHQvtGC0Ysg0YHQutGA0LjQv9GC0LAqLwokcmVzdWx0ID0gZml4VGV4dCgkdGV4dCwgJHJlZ2V4cEN1dCwgJGJpZ1JlZ2V4cCwgJGJpZ1JlcGxhY2VtZW50KTsKICAgIGVjaG8gInskcmVzdWx0fVxuIjsKCj8+