Intereting Posts
Расширенный поиск Magento не возвращает результатов Как отправить некоторые переменные в файл с помощью opencart? PHP сгенерированный контент внутри скрипта Javascript Лучший способ проверить существующего пользователя в базе данных mySQL? Отправка файлов cookie, хранящихся на глобальном уровне $ _COOKIE, с использованием PHP curl Как использовать PHP GD для создания 1 бит растровых изображений (только черный и белый, без серых) Можно ли проверить PHP-синтаксис PHP с PHP? Как отправить почту с помощью gmail в Laravel 5.1? codeigniter $ this-> db-> где (); проблема с пользовательской строкой dompdf и тег img, изображение не будет отображаться Laravel – список выбора заполнения с производными значениями PHP echo внутри эха Простой способ отправки электронной почты с помощью javascript и PHP Zend_Session не позволяет вам уничтожать и воссоздавать сеанс Возвращает и анализирует результаты mysql_fetch_assoc

PHP strpos проверяет многие

Я хочу использовать strpos для проверки множества символов в строке, например:

Я хотел бы отдельно проверить символы : , ! , и & в строке $. Если какой-либо из них найден в любой точке, верните false.

Каков наиболее эффективный способ сделать это? Благодаря!

Использовать preg_match

 preg_match("/[:!&]/", $string) !== 1; 

Пример:

 var_dump(preg_match("/[:!&]/", "this is !a test string")); > int(1) var_dump(preg_match("/[:!&]/", "this is a test string")); > int(0) 

preg_match () возвращает 1, если шаблон соответствует заданному объекту, 0, если это не так, или FALSE, если произошла ошибка.

Если какой-либо из них найден, верните false.

Поскольку вы не заботитесь о фактическом положении персонажа, вы можете использовать регулярное выражение:

 preg_match("/[:!&]/", $str); // 1 if found, 0 if none found 

Если ваше сообщение является точным и что вы пытаетесь сделать, это вернуть FALSE, если эти строки найдены, strpos() не является правильной функцией. strpos() заключается в том, чтобы найти, где в строке сначала появляются некоторые символы (или строки).

Если ваша заявленная цель является точной, вы, вероятно, хотите что-то большее:

 if( preg_match( "/[\:\!&]/", $str ) > 0 ) { return false; }