Строка была разделена с использованием знаков препинания в качестве разделителей; как собрать и поставить пунктуацию обратно?
Я реализую ненормативную лексику с помощью структуры данных Trie. Каждое нецензурное слово добавляется в Trie. Когда у меня есть строка для удаления ненормативной лексики, я взрываю строку с помощью знаков препинания и проверяю каждое слово с помощью Trie. Если найден, я заменяю звездочками. Затем я взрываю строку. Вопрос в том, как я могу отслеживать знаки препинания? Другими словами, как мне убедиться, что результирующая строка имеет пунктуацию?
1 ответ
Решение
Если вы используете 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 для получения дополнительной информации.