字符串已使用标点符号分隔;如何重新组合并重新输入标点符号


String has been split using punctuation as delimiters; how to reassemble and put the punctuation back in?

Im通过使用Trie数据结构来实现亵渎过滤器。每一句脏话都被添加到Trie中。当我有一个字符串可以从中删除脏话时,我会使用标点符号来分解字符串,并用Trie检查每个单词。如果找到,我用星号代替。然后我把字符串内爆了问题是,我如何跟踪标点符号?换句话说,我如何确保结果字符串有标点符号?

如果使用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了解更多信息。