问题描述
|
我通过使用Trie数据结构实现亵渎性过滤器。每个发誓的词都会添加到Trie中。当我有一个要删除亵渎的字符串时,我会使用标点符号将字符串炸开,并使用Trie检查每个单词。如果找到,我将替换为星号。然后将字符串爆破问题是,如何跟踪标点符号?换句话说,我如何确保结果字符串具有标点符号?
解决方法
如果您使用ѭ0split分割字符串,请考虑使用
PREG_SPLIT_DELIM_CAPTURE
标志来捕获带有匹配项的标点符号。
考虑:
$str = \"This. string/ has? punctuation!\";
print_r(preg_split(\'/(\\W+)/\',$str,-1,PREG_SPLIT_DELIM_CAPTURE));
/*
Array
(
[0] => This
[1] => .
[2] => string
[3] => /
[4] => has
[5] => ?
[6] => punctuation
[7] => !
[8] =>
)
*/
有关更多信息,请参见http://php.net/preg_split。