fork download
  1. <?php
  2.  
  3.  
  4. //$text = "ну что. не смотрел еще black mesa.я собирался скачать ,но все как-то некогда было.";
  5. // Для тестов
  6. // $text = 'roses are red,and violets are blue.whatever you do i'll keep it for you.';
  7. $text = 'проверим ,исправятся ли 2 ,2 неверно расставленных пробела. А что с другими языками? おはよう,ございます' ;
  8.  
  9. /* Делает первую букву в строке заглавной */
  10. function makeFirstLetterUppercase($text)
  11. {
  12.  
  13. $text = ltrim($text);
  14. $firstChar = mb_substr($text, 0, 1);
  15. $fixed = mb_strtoupper($firstChar);
  16. $text = $fixed . mb_substr($text, 1);
  17. return $text;
  18. }
  19.  
  20. /* исправляет текст */
  21. function fixText($text)
  22. {
  23.  
  24. $sentenses = preg_split("/([.?!]{1,2})/u", $text, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
  25. foreach ($sentenses as $key => $value) {
  26. $sentenses[$key] = makeFirstLetterUppercase($value);
  27. }
  28.  
  29. $text = implode("", array_values($sentenses));
  30.  
  31. $reg = array(
  32. "/(\\s)([,.!?:;])([а-яёa-z])/ui",
  33. "/([a-zа-яё])([,.!?:;])([а-яёa-z])/ui"
  34. );
  35. $right = array(
  36. "$2 $3",
  37. "$1$2 $3"
  38. );
  39.  
  40. $spacesFixed = preg_replace($reg, $right, $text);
  41.  
  42. return $spacesFixed;
  43. }
  44. $result = fixText($text);
  45. echo "{$result}\n";
Success #stdin #stdout 0.01s 20520KB
stdin
Standard input is empty
stdout
Проверим , исправятся ли 2 ,2 неверно расставленных пробела. А что с другими языками?おはよう,ございます