2013-08-31 5 views
-1

Я пытаюсь вернуть true, если $ str не содержит 'script +'. Он блокирует только «скрипт», но не «скрипт +» ...PHP regex игнорирует все символы, кроме букв

Как я могу это исправить?

if (!preg_match('/[\bscript+\b]/u', $str)) 
return true; 
else 
return false; 
+1

Что вы пытаетесь проверить точно? Возможно, мы сможем найти лучшее решение, если вы объясните, какова ваша цель (с хорошими примерами). –

+0

Вы также можете использовать 'strpos()'. Если он возвращает 'false', то строка не содержит его, иначе это произойдет. –

ответ

0

Вы используете класс символов, который соответствует только одному символу. Вы должны удалить его. И нет смысла использовать \b после +, так как + - не слово. Вы также должны удалить его. И затем уберите + вне класса символов, так как это метасимвол в регулярном выражении.

И, конечно же, вы можете заменить if-else блок там, с одной return заявление следующим образом:

return !preg_match('/\bscript\+/u', $str) 
+0

Хотя последний '\ b' может быть ненужным, удаление первого' \ b' однозначно меняет значение. – user113215

+0

@ пользователь113215. Ах! конечно. Будет редактировать. –

+0

Да, это работает. :) Спасибо вам всем – FireForce

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