3v4l.org

run code in 300+ PHP versions simultaneously
<?php error_reporting(-1); mb_internal_encoding('utf-8'); $text = "много их в Петербурге,молоденьких дур,сегодня в атласе да бархате,а завтра , поглядишь , метут улицу вместе с голью кабацкою...в самом деле ,что было бы с нами ,если бы вместо общеудобного правила:чин чина почитай , ввелось в употребление другое,например:ум ума почитай?какие возникли бы споры!"; //$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) { $second = 1; $first = mb_substr($text, 0, $second); //проверяем, чтобы первый символ был не пробелом{ if ($first == ' '){ $second = 2; $first = mb_substr($text, 0, $second); } //} $other = mb_substr($text, $second); $first = mb_strtoupper($first); $text = $first . $other; return $text; } /* исправляет текст */ function fixText($text) { //$text = makeFirstLetterUppercase($text); //убрали лишние пробелы{ $regexp = '/ + /u'; $text = preg_replace($regexp, ' ', $text); //} //ставим пробел после знака препинания{ $regexp = '/([\\.,;:!\\?])(\w)/u'; $text = preg_replace($regexp, '$1 $2', $text); //} //убираем пробелы перед знаками препинания{ $regexp = '/(\w)( )([\\.,;:!\\?])/u'; $text = preg_replace($regexp, '$1$3', $text); //} //разбиваем исходный текст на предложения //и ставим заглавные буквы{ $regexp = '/(?<=[\\.!\\?])/u'; $parts = preg_split($regexp, $text, 0, PREG_SPLIT_NO_EMPTY); $text = ""; foreach ($parts as $part){ $text = $text . makeFirstLetterUppercase($part); } //} return $text; } $result = fixText($text); echo "{$result}\n";

preferences:
44.68 ms | 402 KiB | 5 Q