我有一个函数可以使每个新句子的字符大写,但是,它不能正常工作。它只适用于新单词正对着标点符号,而不是标点符号后面有空格。我该如何解决这个问题?
//****************************************************************
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 :(得分: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;