使每个句子的第一个字符成为案例

时间:2016-03-11 22:58:44

标签: php preg-replace uppercase

我有一个函数可以使每个新句子的字符大写,但是,它不能正常工作。它只适用于新单词正对着标点符号,而不是标点符号后面有空格。我该如何解决这个问题?

//****************************************************************
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;

结果

我不想要?我为什么要这样做?

需要结果

我不想要?我为什么要这样做?

1 个答案:

答案 0 :(得分: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;