2015-08-28 7 views
0

Я пытаюсь сделать первую букву каждого предложения верхним регистром, сохраняя знаки препинания. Я пробовал ucfirst, но он делает только первую букву строки в верхнем регистре, а не во всех других предложениях. Как это исправить?Создание первой буквы в каждом верхнем регистре предложения с использованием ucfirst

$text = "yes. are you listening to me? huh?!" 
$text = ucfirst($text); 

echo $text; 

Ожидаемый результат:

Yes. Are you listening to me? Huh?!" 

Фактический выход:

Yes. are you listening to me? huh?!" 
+0

страницу руководства для этого очень функция имеет несколько пользовательских функций, чтобы сделать это –

+0

как этот http://php.net/manual/en/function.ucfirst.php#86902 – ElefantPhace

+2

это руководство действительно удивительное место –

ответ

1

Попробуйте это:

function ucfirstSentence($str){ 
    $str = ucfirst(strtolower($str)); 
    $str = preg_replace_callback('/([.!?])\s*(\w)/', 
     create_function('$matches', 'return strtoupper($matches[0]);'), $str); 
    return $str; 
}