我有以下代码行。
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;
我知道我需要在代码中添加分隔符,但每当我尝试添加分隔符时,都会出现解析错误。
请任何人都可以帮忙。
由于
答案 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)
,这可能会弄乱您的正则表达式并导致错误。