最近业务系统中经常会报:短信无法发送成功,关键词屏蔽的错误。一个原因随着业务的发展人名重复的次数增加了。第二个自然是我们国家特殊的国情导致的。
那是怎么优雅的解决呢?
这里的优雅要保证两点:第一点是用户看到的信息无任何异常。第二点是能正常发送短信。
比较简单的是第二点,一般来讲只要在屏蔽关键词之间加入特殊字符既可以解决但是这本身是跟第一点相悖的。
要保证第一点就需要在选择特殊字符上取巧了。在Unicode字符集中恰恰有一些字符是能满足我们的需求。其中一个代表就是:零宽空格(零宽空格(ZWSP)是一种不可打印的Unicode字符,用于可能需要换行处。)。
PHP例子
function replaceWords($words, $text)
{
foreach($words as $word) {
$newWord = trim(preg_replace("#(\S)#u", "$1", $word), "");
$text = str_replace($word, $newWord, $text);
}
return $text;
}
例子