使用ucfirst将每个句子的第一个字母大写

时间:2015-08-28 02:16:48

标签: php string uppercase 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?!"

1 个答案:

答案 0 :(得分:2)

试试这个:

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