在正则表达式方面,我是一个新手。我正在犯这样的错误:
Warning: preg_match() [function.preg-match]: Unknown modifier 'a' in ...
我似乎用不同的修饰符值来获取这些加载。
有问题的代码:
if (preg_match('/\.([^\.]*$)/' . $value . ')(;q=[0-9]\\.[0-9])?$', $this->browser_languages[$i]) && isset($this->catalog_languages[$key])) {
我的服务器主机通知他们已将PHP更新到最新版本。这可能导致了这个问题。
任何人都可以帮我吗?我猜它只需要更新以运行最新版本的PHP。
提前致谢。
答案 0 :(得分:1)
您使用/
作为pattern delimiter,因此/\.([^\.]*$)/
后的所有内容都被视为pattern modifier(我猜$value
以a
开头)。
我会切换到不同的分隔符(~
)并使用preg_quote()
:
preg_match('~\.([^\.]*$)/' . preg_quote( $value, '~') . ')(;q=[0-9]\\.[0-9])?$~'
另请注意正则表达式末尾的~
。