preg_match无法使用动态php变量。
6.1.0
以上匹配工作正常,但是当我使用PHP变量发送值时,它无法正常工作
if ( preg_match( '/abc.com|xyz.com\b/', $m[0] ) ) {
我在$ string变量中发送相同的值,但它仍然无效。请帮忙。
答案 0 :(得分:0)
它现在对我有用。 因为我在preg_replace_callback中使用它 所以必须在里面声明它。 感谢
答案 1 :(得分:0)
正如您提到的preg_replace_callback
,问题很可能是您需要使用use
关键字将变量传递给函数。
见下文PHP snippet显示:
$string = 'abc\.com|xyz\.com';
$s = "Some long string with http:". "//sub.abc.com inside";
$res = preg_replace_callback('~http://\S+~', function ($m) use ($string) {
if (preg_match('/\b(?:'.$string.')\b/', $m[0])) {
return "GOOD_URL";
} else {
return "BAD_URL";
}
}, $s);
echo $res;
请注意,必须转义正则表达式模式中的点。