Строка была разделена с использованием знаков препинания в качестве разделителей;как собрать и поставить пунктуацию обратно? - PullRequest
0 голосов
/ 26 мая 2011

Я внедряю ненормативную лексику, используя структуру данных Trie.Каждое нецензурное слово добавляется в Trie.Когда у меня есть строка для удаления ненормативной лексики, я взрываю строку с помощью знаков препинания и проверяю каждое слово с помощью Trie.Если найден, я заменяю звездочками. Затем я взрываю строку. Вопрос в том, как я могу отслеживать знаки препинания?Другими словами, как мне убедиться, что результирующая строка имеет пунктуацию?

1 Ответ

3 голосов
/ 26 мая 2011

Если вы используете 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 для получения дополнительной информации.

...