Я хочу использовать 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; }