私の現在の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!?. 以外の任意の文字) の場合は、ドットに置き換える必要があります。
- ユーザーが複数の疑問符を書いた場合は、1 つに変換する必要があります (?????? = ?)。それは感嘆符に対してはうまく機能していますが、どういうわけか他の人には機能していません。
どんな助けでも大歓迎です!