我有以下代码行。
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;
我知道我需要将分隔符添加到代码中,但是每当我尝试添加它们时,都会出现解析错误。
请谁能帮忙。
谢谢
你想要'!^(' . $value . ')(;q=[0-9]\.[0-9])?$!'
我已经将!
添加为正则表达式中的第一个字符,最后一个字符。
通过以这种方式分隔字符串,可以添加模式修饰符。
带分隔符:
!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;
您需要在正则表达式的开头和结尾添加分隔符:
'/^(' . $value . ')(;q=[0-9]\.[0-9])?$/'
您可能还需要使用preg_quote($value)
以防值中包含特殊字符,这可能会弄乱您的正则表达式并导致错误。