字符串已使用标点符号作为分隔符进行拆分;如何重新组装并将标点重新放入?

时间:2011-05-26 18:44:28

标签: php filter punctuation profanity

我使用Trie数据结构实现亵渎过滤器。每个发誓的词都被添加到Trie中。当我有一个字符串来删除亵渎,我通过使用标点符号来爆炸字符串并用Trie检查每个单词。如果发现我用星号替换。然后我内爆字符串问题是,我如何跟踪标点符号?换句话说,我如何确保结果字符串有标点符号?

1 个答案:

答案 0 :(得分:3)

如果您使用preg_split()分割字符串,请考虑使用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