fork(1) download
  1. <?php
  2.  
  3.  
  4. $text = "много их в Петербурге,молоденьких дур,сегодня в атласе да бархате,а завтра , поглядишь , метут улицу вместе с голью кабацкою...в самом деле ,что было бы с нами ,если бы вместо общеудобного правила:чин чина почитай , ввелось в употребление другое,например:ум ума почитай??какие возникли бы споры!";
  5. // Для тестов
  6. // $text = 'roses are red,and violets are blue.whatever you do i'll keep it for you.';
  7. // $text = 'привет.есть 2 функции,preg_split и explode ,не понимаю,в чем между ними разница.';
  8.  
  9. /* Делает первую букву в строке заглавной */
  10. function makeFirstLetterUppercase($str) {
  11. $str = mb_strtoupper(mb_substr($str, 0, 1)).
  12. mb_substr($str, 1, mb_strlen($str));
  13. return $str;
  14. }
  15.  
  16. /* исправляет текст */
  17. function fixText($text) {
  18. $regexp = '/(?<=\.{3}|\.\b|\?\b|\?{2}|\!)/u';
  19.  
  20. $stringsArr = preg_split($regexp, $text, 0, PREG_SPLIT_NO_EMPTY);
  21.  
  22. foreach($stringsArr as $el => $value){
  23. $stringsArr[$el] = makeFirstLetterUppercase(trim($value));
  24. }
  25.  
  26. $stringsArr = implode("", $stringsArr);
  27. $stringsArr = preg_replace('/(\s*)([,:;!]|\?[?]*|\.[.]*)(\s*)/u', '$2 ', $stringsArr);
  28.  
  29. return $stringsArr;
  30. }
  31.  
  32. $result = fixText($text);
  33. echo "{$result}\n";
Success #stdin #stdout 0.02s 24632KB
stdin
Standard input is empty
stdout
Много их в Петербурге, молоденьких дур, сегодня в атласе да бархате, а завтра, поглядишь, метут улицу вместе с голью кабацкою... В самом деле, что было бы с нами, если бы вместо общеудобного правила: чин чина почитай, ввелось в употребление другое, например: ум ума почитай?? Какие возникли бы споры!