<?php
$text = "ну что. не смотрел еще black mesa. я собирался скачать ,но все как-то некогда было.
что скажешь про portal 2 ? я вот не играл в него еще ! очень длинный кусок текста получился со своими вставками , надо бы его разбить !
Всё равно не влазит? Нет проблем, сделаем так что бы наш скрипт эту хуйню тоже исправлял." ;
// Для тестов
//$text = "roses are red,and violets are blue.whatever you do i'll keep it for you.";
//$text = 'привет.есть 2 функции,preg_split и explode ,не понимаю,в чем между ними разница.';
function healText( $text ) {
$splitter = '/[\s\wа-яё,\'-]+[.?!]/ui' ;
$sentences = [ ] ;
//бьем на предложения сохраняя в конце знак припинания
//массив предложений лежал в 0 элементе исходного, забираем его.
$sentences = $sentences [ 0 ] ;
foreach ( $sentences as & $sentence ) {
$sentence = preg_replace ( '/\s{2,}/' , ' ' , $sentence ) ; //если больше 2 пробелов подряд то оставляем только 1 $sentence = trim ( $sentence ) ; // убирает пробелы в начале и конце и переходы на след строку. $sentence = preg_replace ( '/\s?,\s?/' , ', ' , $sentence ) ; //убираем неправельные пробелы вокруг запятых $sentence = preg_replace ( '/\s?[?]\s?/' , '?' , $sentence ) ; // вокруг вопросов $sentence = preg_replace ( '/\s?[!]\s?/' , '!' , $sentence ) ; // вокруг ! $sentence = preg_replace ( '/\s?[.]\s?/' , '.' , $sentence ) ; // вокруг точек $sentence = call_user_func ( 'makeFirstLetterBig' , $sentence ) ; //делает первую букву заглавной. }
$result = implode ( ' ' , $sentences ) ; return $result ;
}
function makeFirstLetterBig ( $string ) {
$otherLetters = mb_substr ( $string , 1 ) ; //остальная часть строки $headedString = $firstLetter . $otherLetters ; //склеиваем
return $headedString ;
}
$test = healText( $text ) ;
echo $test ;
PD9waHAKCmVycm9yX3JlcG9ydGluZygtMSk7Cm1iX2ludGVybmFsX2VuY29kaW5nKCd1dGYtOCcpOwoKJHRleHQgPSAi0L3RgyDRh9GC0L4uICAgICAg0L3QtSDRgdC80L7RgtGA0LXQuyDQtdGJ0LUgYmxhY2sgbWVzYS4gICAg0Y8g0YHQvtCx0LjRgNCw0LvRgdGPINGB0LrQsNGH0LDRgtGMICAs0L3QviDQstGB0LUg0LrQsNC6LdGC0L4g0L3QtdC60L7Qs9C00LAg0LHRi9C70L4uCtGH0YLQviDRgdC60LDQttC10YjRjCDQv9GA0L4gcG9ydGFsIDIgPyDRjyDQstC+0YIg0L3QtSDQuNCz0YDQsNC7INCyINC90LXQs9C+INC10YnQtSAhINC+0YfQtdC90Ywg0LTQu9C40L3QvdGL0Lkg0LrRg9GB0L7QuiDRgtC10LrRgdGC0LAg0L/QvtC70YPRh9C40LvRgdGPINGB0L4g0YHQstC+0LjQvNC4INCy0YHRgtCw0LLQutCw0LzQuCAsINC90LDQtNC+INCx0Ysg0LXQs9C+INGA0LDQt9Cx0LjRgtGMICEK0JLRgdGRINGA0LDQstC90L4g0L3QtSDQstC70LDQt9C40YI/INCd0LXRgiDQv9GA0L7QsdC70LXQvCwg0YHQtNC10LvQsNC10Lwg0YLQsNC6INGH0YLQviDQsdGLINC90LDRiCDRgdC60YDQuNC/0YIg0Y3RgtGDINGF0YPQudC90Y4g0YLQvtC20LUg0LjRgdC/0YDQsNCy0LvRj9C7LiI7Ci8vINCU0LvRjyDRgtC10YHRgtC+0LIKLy8kdGV4dCA9ICJyb3NlcyBhcmUgcmVkLGFuZCB2aW9sZXRzIGFyZSBibHVlLndoYXRldmVyIHlvdSBkbyBpJ2xsIGtlZXAgaXQgZm9yIHlvdS4iOwovLyR0ZXh0ID0gJ9C/0YDQuNCy0LXRgi7QtdGB0YLRjCAyINGE0YPQvdC60YbQuNC4LHByZWdfc3BsaXQg0LggZXhwbG9kZSAs0L3QtSDQv9C+0L3QuNC80LDRjizQsiDRh9C10Lwg0LzQtdC20LTRgyDQvdC40LzQuCDRgNCw0LfQvdC40YbQsC4nOwoKCmZ1bmN0aW9uIGhlYWxUZXh0KCR0ZXh0KSB7CgoJJHNwbGl0dGVyID0gJy9bXHNcd9CwLdGP0ZEsXCctXStbLj8hXS91aSc7Cgkkc2VudGVuY2VzID0gW107CgkvL9Cx0YzQtdC8INC90LAg0L/RgNC10LTQu9C+0LbQtdC90LjRjyDRgdC+0YXRgNCw0L3Rj9GPINCyINC60L7QvdGG0LUg0LfQvdCw0Log0L/RgNC40L/QuNC90LDQvdC40Y8KCSRudW1iZXJPZnNlbnRlbmNlcyA9IHByZWdfbWF0Y2hfYWxsKCRzcGxpdHRlciwgJHRleHQsICRzZW50ZW5jZXMpOwoJLy/QvNCw0YHRgdC40LIg0L/RgNC10LTQu9C+0LbQtdC90LjQuSDQu9C10LbQsNC7INCyIDAg0Y3Qu9C10LzQtdC90YLQtSDQuNGB0YXQvtC00L3QvtCz0L4sINC30LDQsdC40YDQsNC10Lwg0LXQs9C+LgogICAgJHNlbnRlbmNlcyA9ICRzZW50ZW5jZXNbMF07IAogICAgCglmb3JlYWNoICgkc2VudGVuY2VzIGFzICYkc2VudGVuY2UpIHsKCQkkc2VudGVuY2UgPSBwcmVnX3JlcGxhY2UoJy9cc3syLH0vJywgJyAnLCAkc2VudGVuY2UpOyAvL9C10YHQu9C4INCx0L7Qu9GM0YjQtSAyINC/0YDQvtCx0LXQu9C+0LIg0L/QvtC00YDRj9C0INGC0L4g0L7RgdGC0LDQstC70Y/QtdC8INGC0L7Qu9GM0LrQviAxCgkJJHNlbnRlbmNlID0gdHJpbSgkc2VudGVuY2UpOyAvLyDRg9Cx0LjRgNCw0LXRgiDQv9GA0L7QsdC10LvRiyDQsiDQvdCw0YfQsNC70LUg0Lgg0LrQvtC90YbQtSDQuCDQv9C10YDQtdGF0L7QtNGLINC90LAg0YHQu9C10LQg0YHRgtGA0L7QutGDLgoJCSRzZW50ZW5jZSA9IHByZWdfcmVwbGFjZSgnL1xzPyxccz8vJywgJywgJywgJHNlbnRlbmNlKTsgLy/Rg9Cx0LjRgNCw0LXQvCDQvdC10L/RgNCw0LLQtdC70YzQvdGL0LUg0L/RgNC+0LHQtdC70Ysg0LLQvtC60YDRg9CzINC30LDQv9GP0YLRi9GFCgkJJHNlbnRlbmNlID0gcHJlZ19yZXBsYWNlKCcvXHM/Wz9dXHM/LycsICc/JywgJHNlbnRlbmNlKTsgLy8g0LLQvtC60YDRg9CzINCy0L7Qv9GA0L7RgdC+0LIKCQkkc2VudGVuY2UgPSBwcmVnX3JlcGxhY2UoJy9ccz9bIV1ccz8vJywgJyEnLCAkc2VudGVuY2UpOyAvLyDQstC+0LrRgNGD0LMgIQoJCSRzZW50ZW5jZSA9IHByZWdfcmVwbGFjZSgnL1xzP1suXVxzPy8nLCAnLicsICRzZW50ZW5jZSk7IC8vINCy0L7QutGA0YPQsyDRgtC+0YfQtdC6CgkJJHNlbnRlbmNlID0gY2FsbF91c2VyX2Z1bmMoJ21ha2VGaXJzdExldHRlckJpZycsICRzZW50ZW5jZSk7ICAvL9C00LXQu9Cw0LXRgiDQv9C10YDQstGD0Y4g0LHRg9C60LLRgyDQt9Cw0LPQu9Cw0LLQvdC+0LkuCgl9CgkkcmVzdWx0ID0gaW1wbG9kZSgnICcsICRzZW50ZW5jZXMpOwoJcmV0dXJuICRyZXN1bHQ7Cn0KCmZ1bmN0aW9uIG1ha2VGaXJzdExldHRlckJpZyAoJHN0cmluZykgewoJJGZpcnN0TGV0dGVyID0gbWJfc3RydG91cHBlcihtYl9zdWJzdHIoJHN0cmluZywgMCwgMSkpOyAvL9Cf0LXRgNCy0LDRjyDQsdGD0LrQstCwCgkkb3RoZXJMZXR0ZXJzID0gbWJfc3Vic3RyKCRzdHJpbmcsIDEpOyAvL9C+0YHRgtCw0LvRjNC90LDRjyDRh9Cw0YHRgtGMINGB0YLRgNC+0LrQuAoJJGhlYWRlZFN0cmluZyA9ICRmaXJzdExldHRlciAuICRvdGhlckxldHRlcnM7IC8v0YHQutC70LXQuNCy0LDQtdC8CglyZXR1cm4gJGhlYWRlZFN0cmluZzsJCn0KCiR0ZXN0ID0gaGVhbFRleHQoJHRleHQpOwplY2hvICR0ZXN0Owo=