我当前的 php 语句清理功能:
function sanitize_sentence($string) {
$pats = array(
'/([.!?]\s{2}),/', # Abc. ,Def
'/\.+(,)/', # ......,
'/(!)!+/', # abc!!!!!!!!
'/\s+(,)/', # abc , def
'/([a-zA-Z])\1\1/'); # greeeeeeen
$fixed = preg_replace($pats,'$1',$string);
$fixed = preg_replace('/,(?!\s)/',', ',$fixed);
return $fixed;
}
echo sanitize_sentence('hello!!!!!!there should be a space after the exclamation mark.right???????yes.right,');
结果应该是:
你好!感叹号后面应该有一个空格。对?是的。对。
所以,仍然缺少的是:
- 任何 !?,.如果右侧有更多文本,则应在任何 !? 之后插入一个额外的空格。
- 如果最后一个字符是逗号(或与 a-zA-Z0-9 不同的任何其他字符!?。),则应将其替换为点。
- 如果用户写了多个问号,则应将其转换为一个(?????? = ?)。这对我来说很适合感叹号,但不知何故它不适用于其他人。
任何帮助将不胜感激!