使用preg_match时的PHP分隔符

时间:2015-01-23 15:33:07

标签: php

我有以下代码行。

if (!preg_match('^(' . $value . ')(;q=[0-9]\\.[0-9])?$', $this->browser_languages[$i]) && isset($this->catalog_languages[$key])) {     
    $this->language = $this->catalog_languages[$key];
    break 2;

我知道我需要在代码中添加分隔符,但每当我尝试添加分隔符时,都会出现解析错误。

请任何人都可以帮忙。

由于

3 个答案:

答案 0 :(得分:0)

您想要'!^(' . $value . ')(;q=[0-9]\\.[0-9])?$!'我已将!添加为正则表达式中的第一个字符,而最后一个字符。

通过这种方式分隔字符串,您可以添加模式修饰符。

答案 1 :(得分:0)

使用分隔符:

!preg_match('/^(' . $value . ')(;q=[0-9]\\.[0-9])?$/', $this->browser_languages[$i]);

引用$value

preg_quote($value, '/');

完整代码:

if (!preg_match('/^(' . preg_quote($value, '/'). ')(;q=[0-9]\\.[0-9])?$/', $this->browser_languages[$i]) && isset($this->catalog_languages[$key])) {     
    $this->language = $this->catalog_languages[$key];
    break 2;

答案 2 :(得分:0)

您需要在正则表达式的开头和结尾添加分隔符:

'/^(' . $value . ')(;q=[0-9]\\.[0-9])?$/'

如果值中包含特殊字符,您可能还想使用preg_quote($value),这可能会弄乱您的正则表达式并导致错误。