PHP - preg_replace и регулярка для замен, подскажите

dedalx
На сайте с 17.03.2008
Offline
63
1797

Народ подскажите.

Есть текст с предложениями, но все слова с маленькой буквы. Пример:

я ехал на машине, было холодно. внезапно пошел дождь.вдруг я вспомнил, что я забыл!да точно это особая уличная магия!девид блейн? конечно он!

Нужно на PHP через preg_replace так прогнать этот текст чтобы в нем предложения стали с заглавных букв, то есть определять конец предложения по знакам ! ? . ; ... , убирать если есть потом пробел и следущую букву делать заглавной.

Для этого нужно юзать регулярку для поиска, а в замене использовать функцию mb_strtoupper к найденной букве как я понимаю.

Пожалуйста подскажите рабочим кодом как такое реализовать!

-МОЙ Скрипт портала Flash игр с автонаполнением (/ru/forum/733320) -МОЙ Скрипт адалт портала с продажей онлайн видео (платник) (/ru/forum/733327)
P
На сайте с 10.03.2008
Offline
168
#1
dedalx:
Для этого нужно юзать регулярку для поиска, а в замене использовать функцию mb_strtoupper к найденной букве как я понимаю.

Модификатор /e

$t = 'я ехал на машине, было холодно. внезапно пошел дождь.вдруг я вспомнил, что я забыл!да точно это особая уличная магия!девид блейн? конечно он!';

$t = preg_replace('/(\!|\.|\?|;|^)(.*)(\S)/eUsi', "'\\1'\\2.strtoupper('\\3')", $t);

echo $t;
[Удален]
#2


$text=preg_replace("|([^\w\s,-])\s?(\w)|Uise","'\\1'.strtoupper('\\2')",$text);

Чтобы это сработало, должна стоять русская локаль.

O3
На сайте с 17.11.2008
Offline
127
#3

или preg_replace_callback если нету локали

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий