2016-03-11 4 views
0

У меня есть функция, которая делает характер каждого нового верхнего слова, но он не работает должным образом. Он работает только в том случае, если новое слово соответствует знаку препинания, а не после пробела после знака препинания. Как я могу это исправить?Создание первого символа в каждом случае заглавия предложения

//**************************************************************** 
function ucAll($str) { 

return preg_replace_callback('/(?<=^|[\.\?!])[^\.]/', function ($match) { 
return strtoupper($match[0]); 
}, $str); 

} //end of function ucAll($str) 
//**************************************************************** 

$string = "i dont' want to? why should i?"; 
$string = ucAll($string); 
echo $string; 

Результат

Я «не хочу? почему я должен?

нужны Результат

Я «не хочу? Почему я должен?

+0

@ rizier123 The/е модификатор является устаревшим, используйте вместо preg_replace_callback – frosty

ответ

1

Просто добавьте (\s)* в соответствующем месте регулярного выражения

<?php 

//**************************************************************** 
function ucAll($str) { 

    return preg_replace_callback('/(?<=^|[\.\?!])(\s)*[^\.]/', function ($match) { 
     return strtoupper($match[0]); 
    }, $str); 

} //end of function ucAll($str) 
//**************************************************************** 

$string = "i dont' want to? why should i?"; 
$string = ucAll($string); 
echo $string; 

 Смежные вопросы

  • Нет связанных вопросов^_^