我正在慢慢完善 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;
}