PHP preg_match如果pattern是一个变量

时间:2013-09-15 23:26:19

标签: php preg-match

如果模式是preg_match中的变量,那么使用分隔符这个语法是否正确?

if (!preg_match("/{$_SERVER["SERVER_NAME"]}/",$variable)){
  .......
}

1 个答案:

答案 0 :(得分:5)

处理此问题的正确方法是使用preg_quote()确保正则表达式中具有特殊含义的字符被正确转义:

$pattern = '/' . preg_quote($_SERVER['SERVER_NAME'], '/') . '/';
if (!preg_match($pattern, $variable)) {
}

当然,这本身并不是一个非常有用的表达方式,因为你也可以这样写:

if (strpos($variable, $_SERVER['SERVER_NAME']) === false) {
}