preg_match不能使用php变量

时间:2016-07-04 06:45:10

标签: php drupal preg-match

preg_match无法使用动态php变量。

6.1.0

以上匹配工作正常,但是当我使用PHP变量发送值时,它无法正常工作

if ( preg_match( '/abc.com|xyz.com\b/', $m[0] ) ) {

我在$ string变量中发送相同的值,但它仍然无效。请帮忙。

2 个答案:

答案 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;

请注意,必须转义正则表达式模式中的点。