Не работает функция preg_match_all() PHP
мне срочно нужна помощь. Нужно написать скрипт на PHP который будет вначале каждого предложения ставить на первом слове первой буквы верхний регистр. В общем есть функция preg_match_all. Со строкой английских слов работает отлично, но русские буквы не работает. Помогите пожалуйста (=
<?php
$str='Привет мир. я русский.и мне круто';
preg_match_all("/\.\s*\w/", $str, $matches);
var_dump($matches);
foreach($matches[0] as $match){
$str = str_replace($match, strtoupper($match), $str);
}
echo $str;
?>
Ответы (1 шт):
Автор решения: u_mulder
→ Ссылка
Вообще поиск и замену можно сразу совместить в одном методе - preg_replace_callback:
$str='Привет мир. я русский.и мне круто';
$r = preg_replace_callback(
// добавляем модификатор u, чтобы регулярка работала с многобайтными кодировками (utf-8, utf-16)
"/\.\s*\w/u",
// на вход поступает каждое из найденных соответствий
function($m) {
// используем mb_ функцию, так как она работает с многобайтными кодировками
return mb_strtoupper($m[0]);
},
$str
);
echo $r; // Привет мир. Я русский.И мне круто