fork download
  1. <?php
  2. /* Делает первую букву в строке заглавной */
  3. function makeFirstLetterUppercase($text) {
  4. //Берём первый символ, делаем его большим.
  5. return mb_strtoupper(mb_substr($text, 0, 1, 'UTF-8'), 'UTF-8') . mb_substr(mb_convert_case($text, MB_CASE_LOWER, 'UTF-8'), 1, mb_strlen($text), 'UTF-8');
  6. }
  7. ///* исправляет текст */
  8. function fixText($text) { //sentence
  9. $sentenceFix=array();
  10. // разделяем текст про предложениям.
  11. $sentences = preg_split("/(?<=[.])|(?<=[?])/u", $text, -1, PREG_SPLIT_NO_EMPTY);
  12. //Удаляй хоть 100 пробелов.
  13. $regexpSpace="/(\s){2,100}/ui";
  14. //В каждом предложении ищем пробелы и исправляем.
  15. foreach (($sentences) as $sentence) {
  16. $someSentence=preg_replace($regexpSpace, '' ,$sentence);
  17. //Пихаем исправленное предложение без повторных пробелов
  18. $upperLetterSentence=makeFirstLetterUppercase($someSentence);
  19. array_push($sentenceFix, $upperLetterSentence);
  20. }
  21. $fixedtext= implode(" ", $sentenceFix);
  22. //Осталось проверить на пробелы после препинаний.
  23. $fixedtext=preg_replace("/([[:punct:]]+)\s*/", '$1 ', $fixedtext);
  24. $fixedtext=preg_replace("/\s*([[:punct:]]+)/", '$1', $fixedtext);
  25.  
  26.  
  27. echo "<pre>";
  28. print_r($fixedtext);
  29. echo "<pre>";
  30. return $fixedtext;
  31. }
  32.  
  33. //$text = "ну что. не смотрел еще black mesa.я собирался скачать ,но все как-то некогда было.";
  34. // Для тестов
  35. // $text = "roses are red,and violets are blue.whatever you do i'll keep it for you.";
  36. //$text = 'привет.есть 2 функции,preg_split и explode ,не понимаю,в чем между ними разница.';
  37. $text="много их в Петербурге,молоденьких дур,сегодня в атласе да бархате,а завтра , поглядишь , метут улицу вместе с голью кабацкою...в самом деле ,что было бы с нами ,если бы вместо общеудобного правила:чин чина почитай , ввелось в употребление другое,например:ум ума почитай?какие возникли бы споры!";
  38. $result = fixText($text);
  39. echo "{$result}\n";
Success #stdin #stdout 0s 52488KB
stdin
Standard input is empty
stdout
<pre>Много их в петербурге, молоденьких дур, сегодня в атласе да бархате, а завтра, поглядишь, метут улицу вместе с голью кабацкою... В самом деле, что было бы с нами, если бы вместо общеудобного правила: чин чина почитай, ввелось в употребление другое, например: ум ума почитай? Какие возникли бы споры! <pre>Много их в петербурге, молоденьких дур, сегодня в атласе да бархате, а завтра, поглядишь, метут улицу вместе с голью кабацкою... В самом деле, что было бы с нами, если бы вместо общеудобного правила: чин чина почитай, ввелось в употребление другое, например: ум ума почитай? Какие возникли бы споры!