Проверьте, находятся ли значения $ var1 OR $ var2 в строке AND, если $ var3, $ var4 и $ var5 находятся в одной строке - PullRequest
0 голосов
/ 28 декабря 2018

У меня проблемы с этим следующим preg_match:

if (preg_match("[/$fnc1/|/$fnc2/]", $val) && (preg_match("[/$rank_1/|/$rank_2/|/$rank_3/]", $val) ===1)){ do something }

Чего я хочу добиться: проверить, находится ли $fnc1 ИЛИ $fnc2 в $val И если $rank_1, $rank_2 ИЛИ $rank_3 в $val.Я пытался несколько раз разделить / изменить пометки между переменными в preg_match, но это не работает.Я никогда не получаю положительный результат, даже если он заменит переменные на текст вместо этого ...

какие-нибудь советы?

Рабочий код, переменные не используются:

if (preg_match("[\b123\b|\b456\b]", $val) && (preg_match("[\bACB\b|\bZXY\b]", 
$val) ===1)){

1 Ответ

0 голосов
/ 28 декабря 2018

Полагаю, вы добавляете нежелательные квадратные скобки и косые черты в свое регулярное выражение, попробуйте:

if (preg_match("/$fnc1|$fnc2/", $val) && preg_match("/$rank_1|$rank_2|$rank_3/", $val) ) {...}

Вы можете объединить 2 preg_match в 1:

if (preg_match("/^(?=.*(?:$fnc1|$fnc2))(?=.*(?:$rank_1|$rank_2|$rank_3)).*$/", $val) ) {...}
...