【发布时间】:2012-08-25 19:58:15
【问题描述】:
我正在慢慢完善 PHP 中用于清理用户输入的标点符号修复功能。该函数目前在标点符号后添加空格,在标点符号前删除空格,并将每个句子的第一个单词大写。我见过一些人在寻找类似的功能,所以我很高兴分享我到目前为止所拥有的东西。它非常接近我想要的位置,但是,当它在逗号后添加空格时,当逗号在 1,000 等数字内时,应避免这样做?也许有办法缩短我所拥有的但仍然达到相同的结果?感谢您的宝贵时间...
function format_punc($string){
$punctuation = ',.;:';
$string = str_replace(' ?', '?', str_replace(' .', '.', str_replace(' ,', ',', preg_replace('/(['.$punctuation.'])[\s]*/', '\1 ', $string))));
$string = trim(preg_replace('/[[:space:]]+/', ' ', preg_replace('/([\.!\?]\s+|\A)(\w)/e', '"$1" . strtoupper("$2")', $string)));
if($string[strlen($string)-1]==','){
$string = substr($string, 0, -1).'.';
}
return $string;
}
【问题讨论】:
-
如何确定逗号是千位分隔符,或者您正在处理数字的枚举?
-
这就是我发布此内容的原因...我希望有人可以帮助推进该功能以判断其是否处理数字。
-
有些国家使用不同的轮廓线来表示 1000 秒,也许这可以从设置中推断出来......(只是说)
标签: php punctuation