fork download
  1. <?php
  2.  
  3.  
  4.  
  5. $text="много их в Петербурге,молоденьких дур,сегодня в атласе да бархате,а завтра , поглядишь , метут улицу вместе с голью кабацкою...в самом деле ,что было бы с нами ,если бы вместо общеудобного правила:чин чина почитай , ввелось в употребление другое,например:ум ума почитай?какие возникли бы споры!";
  6.  
  7. /*Создаем регулярное выражение для поиска окончаний предложения*/
  8. $regexp="/(?<=[.!?])\\s?(?=[а-яё])/ui";
  9.  
  10. /*Создаем пустой массив, в который будем вносить отдельные предложения $text*/
  11. $parts=[];
  12. /*Забиваем в массив $parts $text, разделенный по правилу $regexp*/
  13. $parts=preg_split($regexp,$text);
  14. /*Создаем пустой массив, в который внесем отформатированные предложения (с заглавными первыми буквами)*/
  15. $partsFormated=[];
  16. /*Создаем пустую переменную, в которой позднее будем "склеивать" текст*/
  17. $textWithUpFirstLetter=NULL;
  18.  
  19. /*Перебираем массив $parts в переменную $el*/
  20. foreach ($parts as $el) {
  21.  
  22. /*Извлекаем первую букву из переменной $el в переменную $firstLetter*/
  23. $firstLetter=mb_substr($el,0,1);
  24. /*Переводим текст, содержащийся в $firstLetter, в верхний регистр*/
  25. $firstLetter=mb_strtoupper($firstLetter);
  26. /*Присваиваем переменной $el значение элемента $el без 0-го символа (Удаляем первую букву, содержащуюся в строке)*/
  27. $el=mb_substr($el,1);
  28. /*Присваиваем переменной $el результат "склеивания" $firstLetter и $el*/
  29. $el=$firstLetter . $el;
  30. /*Генерируем текст. Он будет пополняться после переборки каждого из символов массива*/
  31. $textWithUpFirstLetter=$textWithUpFirstLetter. $el;
  32. }
  33.  
  34. /*Создаем регулярное выражение для поиска знаков препинания. Т.к. нам нужно сохранить многоточия, тройные вопросительные и восклицательные знаки, используем (?<=[а-яё.,?!]) в начале и (?=[а-яё]) в конце*/
  35. $regexpSigns="/(?<=[а-яё.,?!])\\s?([.,!?:;])\\s?(?=[а-яё])/ui";
  36. /*Присваиваем переменной $textFormated результат замены по шаблону $regexpSigns на "$1 " в переменной $textWithUpFirstLetter*/
  37. $textFormated=preg_replace($regexpSigns, "$1 ", $textWithUpFirstLetter);
  38. echo ($textFormated);
Success #stdin #stdout 0.03s 24840KB
stdin
Standard input is empty
stdout
Много их в Петербурге, молоденьких дур, сегодня в атласе да бархате, а завтра, поглядишь, метут улицу вместе с голью кабацкою... В самом деле, что было бы с нами, если бы вместо общеудобного правила: чин чина почитай, ввелось в употребление другое, например: ум ума почитай? Какие возникли бы споры!