fork(1) download
  1. <?php
  2.  
  3.  
  4. $text = "много их в Петербурге,молоденьких дур,сегодня в атласе да бархате,а завтра , поглядишь , метут улицу вместе с голью кабацкою...в самом деле ,что было бы с нами ,если бы вместо общеудобного правила:чин чина почитай , ввелось в употребление другое,например:ум ума почитай?какие возникли бы споры!";
  5.  
  6. function mb_ucfirst($str) {
  7.  
  8. $letters = preg_split('//u', $str);
  9.  
  10. for ($i = 0; $i < count($letters); $i++) {
  11. if (preg_match('/[а-яёА-ЯЁ]/u', $letters[$i])) {
  12. echo "$letters[$i], символ номер $i - НЕ ПРОБЕЛ, ПОВТОРЯЮ, НЕ ПРОБЕЛ\n";
  13. $letters[$i] = mb_strtoupper($letters[$i]);
  14. break;
  15. }
  16. }
  17.  
  18. return implode("", $letters);
  19. }
  20.  
  21. function makeFirstLetterUppercase($text) {
  22. $sentences = preg_split("/(?<=[.?!])/u", $text);
  23.  
  24. echo "Разделили на предложения\n";
  25. foreach ($sentences as $sentence) {
  26. echo "$sentence\n";
  27. }
  28.  
  29. echo "Приступаем к ucfirst\n\n";
  30.  
  31. for($i = 0; $i < count($sentences); $i++) {
  32.  
  33. echo "$sentences[$i] $i - сейчас\n";
  34. $sentences[$i] = mb_ucfirst($sentences[$i]);
  35. echo "$sentences[$i] $i - теперь\n";
  36.  
  37.  
  38. // if(mb_substr($sentences[$i], 0, 1) != " ") {
  39. // mb_strtoupper(mb_substr($sentences[$i], 0, 1));
  40. // } elseif(mb_strlen($sentences[$i]) > 1) {
  41. // mb_strtoupper(mb_substr($sentences[$i], 1, 1));
  42. // }
  43.  
  44. //echo "$sentences[$i] - $i предложение\n";
  45. }
  46.  
  47. $text = implode("", $sentences);
  48. return $text;
  49. }
  50.  
  51. function fixText($text) {
  52. $regexp = array(
  53. '/([,.?!:;])([а-яёА-ЯЁ])/u',
  54. '/([а-яёА-ЯЁ])\\s+([,.?!:;])/u',
  55. );
  56.  
  57. $replacement = array(
  58. '$1 $2',
  59. '$1$2',
  60. );
  61.  
  62. $text = preg_replace($regexp, $replacement, $text);
  63. return $text;
  64. }
  65.  
  66. $correctText = fixText($text);
  67. $res = makeFirstLetterUppercase($correctText);
  68. echo "$res\n";
Success #stdin #stdout 0.02s 25976KB
stdin
Standard input is empty
stdout
Разделили на предложения
много их в Петербурге, молоденьких дур, сегодня в атласе да бархате, а завтра, поглядишь, метут улицу вместе с голью кабацкою.
.
.
 в самом деле, что было бы с нами, если бы вместо общеудобного правила: чин чина почитай, ввелось в употребление другое, например: ум ума почитай?
 какие возникли бы споры!

Приступаем к ucfirst

много их в Петербурге, молоденьких дур, сегодня в атласе да бархате, а завтра, поглядишь, метут улицу вместе с голью кабацкою. 0 - сейчас
м, символ номер 1 - НЕ ПРОБЕЛ, ПОВТОРЯЮ, НЕ ПРОБЕЛ
Много их в Петербурге, молоденьких дур, сегодня в атласе да бархате, а завтра, поглядишь, метут улицу вместе с голью кабацкою. 0 - теперь
. 1 - сейчас
. 1 - теперь
. 2 - сейчас
. 2 - теперь
 в самом деле, что было бы с нами, если бы вместо общеудобного правила: чин чина почитай, ввелось в употребление другое, например: ум ума почитай? 3 - сейчас
в, символ номер 2 - НЕ ПРОБЕЛ, ПОВТОРЯЮ, НЕ ПРОБЕЛ
 В самом деле, что было бы с нами, если бы вместо общеудобного правила: чин чина почитай, ввелось в употребление другое, например: ум ума почитай? 3 - теперь
 какие возникли бы споры! 4 - сейчас
к, символ номер 2 - НЕ ПРОБЕЛ, ПОВТОРЯЮ, НЕ ПРОБЕЛ
 Какие возникли бы споры! 4 - теперь
 5 - сейчас
 5 - теперь
Много их в Петербурге, молоденьких дур, сегодня в атласе да бархате, а завтра, поглядишь, метут улицу вместе с голью кабацкою... В самом деле, что было бы с нами, если бы вместо общеудобного правила: чин чина почитай, ввелось в употребление другое, например: ум ума почитай? Какие возникли бы споры!