0

Trie データ構造を使用して冒涜フィルターを実装しています。すべての悪口はトライに追加されます。冒とく的な表現を削除する文字列がある場合は、句読点を使用して文字列を分解し、すべての単語をトライでチェックします。見つかった場合は、アスタリスクに置き換えます。次に、文字列を内破します。問題は、句読点をどのように追跡するかということです。つまり、結果の文字列に句読点があることを確認するにはどうすればよいですか?

4

1 に答える 1

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を参照してください。

于 2011-05-26T18:55:36.880 に答える