Intereting Posts

PHP preg_match «И» оператор

Я использую оператор «ИЛИ» «|» для сопоставления слов из переменной $ name

$name = "one five six two"; if (preg_match('/(one|two)/i', $name)) {return true;} 

Какой оператор следует использовать с preg_match, чтобы иметь условие «И», если эти слова находятся внутри $ name?

т.е.

 if (preg_match('/(two "AND" five)/i', $name)) {return true;} 

Solutions Collecting From Web of "PHP preg_match «И» оператор"

Если вы все еще хотите использовать регулярное выражение, вам понадобятся положительные результаты:

 if (preg_match('/^(?=.*one)(?=.*two)/i', $name)) {return true;} 

Это не рекомендуется для простых вещей (вроде overkill), и это становится грязным с более сложными вещами …

Я думаю, вам просто нужно разделить два условия и использовать && как следует

 if(preg_match('/(two)/i', $name) && preg_match('/(five)/i', $name)) {return true;} 

Подробнее here

 if ( preg_match('/two/i', $name) && preg_match('/five/i', $name) ) {return true;} 

Вы можете просто сделать это, не прибегая к регулярным выражениям:

 if (strpos($name, 'one') !== false && strpos($name, 'two') !== false) { // do something } 

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

Не используйте preg_match() если вы хотите только проверить, содержится ли одна строка в другой строке. strstr() этого используйте strpos() или strstr() поскольку они будут быстрее. (PHP.net).

 if (str_pos($name, 'two') !== false && str_pos($name, 'five') !== false) { return true; }