以下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
答案 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) ) {...}