2012-05-08 5 views
0

Я пытаюсь выполнить preg_match для фильтрации нежелательных спам-запросов, и я хотел бы совместить любое слово, указанное в preg_match, и фильтровать его, если после него не осталось места.Регулярное выражение для совпадения слов без пробела

Так, например, если у меня есть слово balloon в preg_match, тогда я хочу фильтровать что-либо вроде «balloon1» или «balloond» или «balloonedfbdg» и т. Д. И разрешать что-либо с пробелом после воздушного шара, такого как «воздушный шар большой», баллон маленький "и т. д.

У меня есть много запросов от google, которые берут одно слово и добавляют к нему целую кучу дерьма, которую я хочу отфильтровать. Это всего лишь несколько слов, но для меня достаточно раздражать, чтобы прийти сюда и найти ответ, чтобы исправить это.

Я уже использую preg_match для некоторых спам-запросов с использованием регулярных выражений, но я не знаю, как сопоставить что-то, что не разнесено, и разрешить что-то, что имеет пробел.

Любая помощь приветствуется, спасибо.

ответ

1

Ваше выражение: /(balloon|otherwordone|othertwo)[^\s]/i

Это соответствует перечисленным слова, если они не с последующим пробелом (\ с)

Edit: Использование \B (не граничном слово):

/(balloon|otherwordone|othertwo)\B/i 

Это предотвращает запуск обычных символов предложения, вызывающих регулярное выражение (например, точка, запятая).

+0

[^ \ s], похоже, хорошо работает. Это также делает его таким воздушным шаром, что одно слово может быть запрошено, что приятно. Благодарю. – chris

+0

Вы также можете \ B (а не слово-граница): '/ (воздушный шар | otherwordone | othertwo) \ B/i', который предотвращает« воздушный шар ».,« Воздушный шар »и т. Д. От соответствия. – ccKep

+0

Прохладный. Благодарю. – chris

Смежные вопросы