最近业务系统中常常会报:短信没法发送成功,关键词屏蔽的错误。一个缘由随着业务的发展人名重复的次数增长了。第二个天然是咱们国家特殊的国情致使的。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