<?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 ,не понимаю,в чем между ними разница.';
/* Делает первую букву в строке заглавной */
function makeFirstLetterUppercase($text)
{
// Разбиваем текст на предложения
$explode = preg_split("/[.?!]/u", $text, 0, PREG_SPLIT_NO_EMPTY
); foreach ($explode as $suggestions) {
$i = $i + 1;
// Удаляем пробелы из начала строки
$suggestions = trim($suggestions); // Разбиваем текст на буквы (у каждого предложения свой массив)
$characters[$i] = preg_split('//u', $suggestions, 0, PREG_SPLIT_NO_EMPTY
); foreach ($characters[$i] as $letters) {
// В каждом массиве изменяем регистр первого элемента массива (букву)
}
// Собираем буквы в предложения
$comma_separated = implode("", $characters[$i]); // Собираем предложения в текст и возвращаем точки
$edit = $edit . "{$comma_separated}.";
$text = $edit;
}
$result = fixText($text);
return ($result);
}
/* исправляет текст */
function fixText($text)
{
// Удаляем лишние пробелы перед !?,.
$text = preg_replace('/([a-zа-яё]+)([\\s]+)([!?,.]+)/ui', '$1$3', $text); // Добавляем пробел после !?,.
$text = preg_replace('/([?!.,]+)([a-zа-яё]+)/ui', '$1 $2', $text); return ($text);
}
$result = makeFirstLetterUppercase($text);
echo "{$result}\n";
PD9waHAKCmVycm9yX3JlcG9ydGluZygtMSk7Cm1iX2ludGVybmFsX2VuY29kaW5nKCd1dGYtOCcpOwoKJHRleHQgPSAi0L3RgyDRh9GC0L4uICAgICAg0L3QtSDRgdC80L7RgtGA0LXQuyDQtdGJ0LUgYmxhY2sgbWVzYS7RjyDRgdC+0LHQuNGA0LDQu9GB0Y8g0YHQutCw0YfQsNGC0YwgICzQvdC+INCy0YHQtSDQutCw0Lot0YLQviDQvdC10LrQvtCz0LTQsCDQsdGL0LvQvi4iOwovLyDQlNC70Y8g0YLQtdGB0YLQvtCyCi8vJHRleHQgPSAicm9zZXMgYXJlIHJlZCxhbmQgdmlvbGV0cyBhcmUgYmx1ZS53aGF0ZXZlciB5b3UgZG8gaSdsbCBrZWVwIGl0IGZvciB5b3UuIjsKLy8kdGV4dCA9ICfQv9GA0LjQstC10YIu0LXRgdGC0YwgMiDRhNGD0L3QutGG0LjQuCxwcmVnX3NwbGl0INC4IGV4cGxvZGUgLNC90LUg0L/QvtC90LjQvNCw0Y4s0LIg0YfQtdC8INC80LXQttC00YMg0L3QuNC80Lgg0YDQsNC30L3QuNGG0LAuJzsKCgoKLyog0JTQtdC70LDQtdGCINC/0LXRgNCy0YPRjiDQsdGD0LrQstGDINCyINGB0YLRgNC+0LrQtSDQt9Cw0LPQu9Cw0LLQvdC+0LkgKi8KZnVuY3Rpb24gbWFrZUZpcnN0TGV0dGVyVXBwZXJjYXNlKCR0ZXh0KQp7CiAgICAvLyDQoNCw0LfQsdC40LLQsNC10Lwg0YLQtdC60YHRgiDQvdCwINC/0YDQtdC00LvQvtC20LXQvdC40Y8KICAgICRleHBsb2RlICAgID0gcHJlZ19zcGxpdCgiL1suPyFdL3UiLCAkdGV4dCwgMCwgUFJFR19TUExJVF9OT19FTVBUWSk7CiAgICAkY2hhcmFjdGVycyA9IGFycmF5KCk7CiAgICBmb3JlYWNoICgkZXhwbG9kZSBhcyAkc3VnZ2VzdGlvbnMpIHsKICAgICAgICAkaSAgICAgICAgICAgICAgPSAkaSArIDE7CiAgICAgICAgLy8g0KPQtNCw0LvRj9C10Lwg0L/RgNC+0LHQtdC70Ysg0LjQtyDQvdCw0YfQsNC70LAg0YHRgtGA0L7QutC4CiAgICAgICAgJHN1Z2dlc3Rpb25zICAgID0gdHJpbSgkc3VnZ2VzdGlvbnMpOwogICAgICAgIC8vINCg0LDQt9Cx0LjQstCw0LXQvCDRgtC10LrRgdGCINC90LAg0LHRg9C60LLRiyAo0YMg0LrQsNC20LTQvtCz0L4g0L/RgNC10LTQu9C+0LbQtdC90LjRjyDRgdCy0L7QuSDQvNCw0YHRgdC40LIpCiAgICAgICAgJGNoYXJhY3RlcnNbJGldID0gcHJlZ19zcGxpdCgnLy91JywgJHN1Z2dlc3Rpb25zLCAwLCBQUkVHX1NQTElUX05PX0VNUFRZKTsKICAgICAgICBmb3JlYWNoICgkY2hhcmFjdGVyc1skaV0gYXMgJGxldHRlcnMpIHsKICAgICAgICAgICAgLy8g0JIg0LrQsNC20LTQvtC8INC80LDRgdGB0LjQstC1INC40LfQvNC10L3Rj9C10Lwg0YDQtdCz0LjRgdGC0YAg0L/QtdGA0LLQvtCz0L4g0Y3Qu9C10LzQtdC90YLQsCDQvNCw0YHRgdC40LLQsCAo0LHRg9C60LLRgykKICAgICAgICAgICAgJGNoYXJhY3RlcnNbJGldWzBdID0gbWJfc3RydG91cHBlcigkY2hhcmFjdGVyc1skaV1bMF0pOwogICAgICAgIH0KICAgICAgICAvLyDQodC+0LHQuNGA0LDQtdC8INCx0YPQutCy0Ysg0LIg0L/RgNC10LTQu9C+0LbQtdC90LjRjwogICAgICAgICRjb21tYV9zZXBhcmF0ZWQgPSBpbXBsb2RlKCIiLCAkY2hhcmFjdGVyc1skaV0pOwogICAgICAgIC8vINCh0L7QsdC40YDQsNC10Lwg0L/RgNC10LTQu9C+0LbQtdC90LjRjyDQsiDRgtC10LrRgdGCINC4INCy0L7Qt9Cy0YDQsNGJ0LDQtdC8INGC0L7Rh9C60LgKICAgICAgICAkZWRpdCAgICAgICAgICAgID0gJGVkaXQgLiAieyRjb21tYV9zZXBhcmF0ZWR9LiI7CiAgICAgICAgJHRleHQgICAgICAgICAgICA9ICRlZGl0OwogICAgfQogICAgCiAgICAkcmVzdWx0ID0gZml4VGV4dCgkdGV4dCk7CiAgICByZXR1cm4gKCRyZXN1bHQpOwp9CgovKiDQuNGB0L/RgNCw0LLQu9GP0LXRgiDRgtC10LrRgdGCICovCmZ1bmN0aW9uIGZpeFRleHQoJHRleHQpCnsKICAgIC8vINCj0LTQsNC70Y/QtdC8INC70LjRiNC90LjQtSDQv9GA0L7QsdC10LvRiyDQv9C10YDQtdC0ICE/LC4KICAgICR0ZXh0ID0gcHJlZ19yZXBsYWNlKCcvKFthLXrQsC3Rj9GRXSspKFtcXHNdKykoWyE/LC5dKykvdWknLCAnJDEkMycsICR0ZXh0KTsKICAgIC8vINCU0L7QsdCw0LLQu9GP0LXQvCDQv9GA0L7QsdC10Lsg0L/QvtGB0LvQtSAhPywuCiAgICAkdGV4dCA9IHByZWdfcmVwbGFjZSgnLyhbPyEuLF0rKShbYS160LAt0Y/RkV0rKS91aScsICckMSAkMicsICR0ZXh0KTsKICAgIHJldHVybiAoJHRleHQpOwp9CgokcmVzdWx0ID0gbWFrZUZpcnN0TGV0dGVyVXBwZXJjYXNlKCR0ZXh0KTsKZWNobyAieyRyZXN1bHR9XG4iOw==