<?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[\s]+/' , ' ' , $sentence ) ; //если больше 2 пробелов подряд то оставляем только 1 $sentence = preg_replace ( '/\n/' , '' , $sentence ) ; //вырезаем переходы на след строку. $sentence = preg_replace ( '/^\s/' , '' , $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 ) ; // вокруг точек $otherLetters = mb_substr ( $sentence , ( - 1 * mb_strlen ( $sentence ) + 1 ) ) ; //остальная часть строки $sentence = $firstLetter . $otherLetters ; //склеиваем
}
$result = implode ( ' ' , $sentences ) ; return $result ;
}
$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+LgogICAgJHNlbnRlbmNlcyA9ICRzZW50ZW5jZXNbMF07IAogICAgCglmb3JlYWNoICgkc2VudGVuY2VzIGFzICYkc2VudGVuY2UpIHsKCQkkc2VudGVuY2UgPSBwcmVnX3JlcGxhY2UoJy9cc1tcc10rLycsICcgJywgJHNlbnRlbmNlKTsgLy/QtdGB0LvQuCDQsdC+0LvRjNGI0LUgMiDQv9GA0L7QsdC10LvQvtCyINC/0L7QtNGA0Y/QtCDRgtC+INC+0YHRgtCw0LLQu9GP0LXQvCDRgtC+0LvRjNC60L4gMQoJCSRzZW50ZW5jZSA9IHByZWdfcmVwbGFjZSgnL1xuLycsICcnLCAkc2VudGVuY2UpOyAvL9Cy0YvRgNC10LfQsNC10Lwg0L/QtdGA0LXRhdC+0LTRiyDQvdCwINGB0LvQtdC0INGB0YLRgNC+0LrRgy4KCQkkc2VudGVuY2UgPSBwcmVnX3JlcGxhY2UoJy9eXHMvJywgJycsICRzZW50ZW5jZSk7IC8v0LLRi9GA0LXQt9Cw0LXQvCDQv9GA0L7QsdC10LvRiyDQsiDQvdCw0YfQsNC70LUg0L/RgNC10LTQu9C+0LbQtdC90LjRjy4KCQkkc2VudGVuY2UgPSBwcmVnX3JlcGxhY2UoJy9ccz8sXHM/LycsICcsICcsICRzZW50ZW5jZSk7IC8v0YPQsdC40YDQsNC10Lwg0L3QtdC/0YDQsNCy0LXQu9GM0L3Ri9C1INC/0YDQvtCx0LXQu9GLINCy0L7QutGA0YPQsyDQt9Cw0L/Rj9GC0YvRhQoJCSRzZW50ZW5jZSA9IHByZWdfcmVwbGFjZSgnL1xzP1s/XVxzPy8nLCAnPycsICRzZW50ZW5jZSk7IC8vINCy0L7QutGA0YPQsyDQstC+0L/RgNC+0YHQvtCyCgkJJHNlbnRlbmNlID0gcHJlZ19yZXBsYWNlKCcvXHM/WyFdXHM/LycsICchJywgJHNlbnRlbmNlKTsgLy8g0LLQvtC60YDRg9CzICEKCQkkc2VudGVuY2UgPSBwcmVnX3JlcGxhY2UoJy9ccz9bLl1ccz8vJywgJy4nLCAkc2VudGVuY2UpOyAvLyDQstC+0LrRgNGD0LMg0YLQvtGH0LXQugoJCSRmaXJzdExldHRlciA9IG1iX3N0cnRvdXBwZXIobWJfc3Vic3RyKCRzZW50ZW5jZSwgMCwgMSkpOyAvL9Cf0LXRgNCy0LDRjyDQsdGD0LrQstCwCgkJJG90aGVyTGV0dGVycyA9IG1iX3N1YnN0cigkc2VudGVuY2UsICgtMSptYl9zdHJsZW4oJHNlbnRlbmNlKSsxKSk7IC8v0L7RgdGC0LDQu9GM0L3QsNGPINGH0LDRgdGC0Ywg0YHRgtGA0L7QutC4CgkJJHNlbnRlbmNlID0gJGZpcnN0TGV0dGVyIC4gJG90aGVyTGV0dGVyczsgLy/RgdC60LvQtdC40LLQsNC10LwKCX0KCgkkcmVzdWx0ID0gaW1wbG9kZSgnICcsICRzZW50ZW5jZXMpOwoJcmV0dXJuICRyZXN1bHQ7Cn0KCiR0ZXN0ID0gaGVhbFRleHQoJHRleHQpOwplY2hvICR0ZXN0Owo=