检查是否在字符串中找到 $var1 或 $var2 值以及 $var3、$var4 和 $var5 是否在同一个字符串中

Check if $var1 OR $var2 values are found in string AND if $var3, $var4 and $var5 is in the same string

我遇到以下问题 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 中。 我已经多次尝试 seperate/change preg_match 中变量之间的标记,但它不起作用。我从来没有得到一个积极的结果,即使我用文本替换变量也能正常工作...

有什么建议吗?

工作代码,未使用变量:

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

我猜你在正则表达式中添加了不需要的方括号和斜杠,试试看:

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) ) {...}