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

时间:2018-12-28 10:40:45

标签: php regex preg-match

以下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或{{1} }位于$rank_3中。 我已经尝试过多次在preg_match中的变量之间分隔/更改标记,但是它不起作用。我永远不会获得积极的结果,即使如果我将变量替换为文本,它也可以正常工作...

任何提示?

工作代码,未使用任何变量:

$val

1 个答案:

答案 0 :(得分: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) ) {...}