我當前的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!不同的字符),則應將其替換爲點。
- 如果用戶寫入多個問號,則應將其轉換爲一個(?????? =?)。對於我來說,這對驚歎號工作正常,但不知何故,它不適用於其他人。
任何幫助將不勝感激!
在你的解釋很詳細。非常感謝你! – andufo
剛剛注意到應該覆蓋的最後一個細節;如果用戶輸入:hello !. (或你好!)它應該被轉換成(你好!) - 它也適用於你好?等 - 這隻適用於期間。 – andufo
對不起,只是注意到它不會與'你好朋友.....?'這些時期被分成'.. .. ..'出於某種原因。 – andufo