fork download
  1. <?php
  2.  
  3. //Пиши верно
  4.  
  5. //$text = "ну что. не смотрел еще black mesa. я собирался скачать ,но все как-то некогда было.";
  6. // Для тестов
  7. // $text = "roses are red,and violets are blue.whatever you do i'll keep it for you.";
  8. // $text = 'привет.есть 2 функции,preg_split и explode ,не понимаю,в чем между ними разница.';
  9. $text = "много их в Петербурге,молоденьких дур,сегодня в атласе да бархате,а завтра , поглядишь , метут улицу вместе с голью кабацкою...в самом деле ,что было бы с нами ,если бы вместо общеудобного прaвила:чин чина почитай , ввелось в употребление другое,например:ум ума почитай?какие возникли бы споры!";
  10.  
  11.  
  12. /* Делает первую букву в строке заглавной */
  13. function makeFirstLetterUppercase($text) {
  14. $letters = preg_split("//u", $text,-1,PREG_SPLIT_NO_EMPTY);
  15. $letters[0] = mb_strtoupper($letters[0]);
  16. $sentence = implode('',$letters);
  17. return $sentence;
  18. }
  19.  
  20. /* исправляет текст */
  21. function fixText($text) {
  22. $regExp =[
  23. "/(^ *)/u", //пробелы в начале строки
  24. "/ +/u", //лишние пробелы в тексте
  25. "/ *([.,?!:]) */u", //знаки препининия
  26. "/\. \. \. */u" //троеточие с пробелами между точек
  27. ];
  28. $result = '';
  29. $matches = array();
  30. $matches = preg_split("/(?<=[?!.])/u", $text ,-1,PREG_SPLIT_NO_EMPTY);
  31.  
  32. $text = preg_replace($regExp[1], ' ', $text); // удаляем лишние пробелы в тексте
  33.  
  34. foreach($matches as $match){
  35. $match = preg_replace($regExp[0], '', $match); // удаляем пробел из начала строки
  36. $match = preg_replace($regExp[2], '$1 ', $match); // меняем на знак препинания и пробел
  37. $match = makeFirstLetterUppercase($match);
  38. $result .= $match;
  39. }
  40.  
  41. $result = preg_replace("/\. \. \. */u", "... ", $result); //исправляем троеточие
  42. return $result;
  43. }
  44.  
  45. $result = fixText($text);
  46. echo "{$result}\n";
  47.  
Success #stdin #stdout 0.02s 52472KB
stdin
Standard input is empty
stdout
Много их в Петербурге, молоденьких дур, сегодня в атласе да бархате, а завтра, поглядишь, метут улицу вместе с голью кабацкою... В самом деле, что было бы с нами, если бы вместо общеудобного прaвила: чин чина почитай, ввелось в употребление другое, например: ум ума почитай? Какие возникли бы споры!