最近業務系統中常常會報:短信沒法發送成功,關鍵詞屏蔽的錯誤。一個緣由隨着業務的發展人名重複的次數增長了。第二個天然是咱們國家特殊的國情致使的。php
那是怎麼優雅的解決呢?spa
這裏的優雅要保證兩點:第一點是用戶看到的信息無任何異常。第二點是能正常發送短信。code
比較簡單的是第二點,通常來說只要在屏蔽關鍵詞之間加入特殊字符既能夠解決可是這自己是跟第一點相悖的。圖片
要保證第一點就須要在選擇特殊字符上取巧了。在Unicode字符集中偏偏有一些字符是能知足咱們的需求。其中一個表明就是:零寬空格(零寬空格(ZWSP)是一種不可打印的Unicode字符,用於可能須要換行處。)。ip
PHP例子get
function replaceWords($words, $text) { foreach($words as $word) { $newWord = trim(preg_replace("#(\S)#u", "$1", $word), ""); $text = str_replace($word, $newWord, $text); } return $text; }
例子
it