php升级后preg_match问题

时间:2014-01-13 09:54:05

标签: php expression match

在正则表达式方面,我是一个新手。我正在犯这样的错误:

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。

提前致谢。

1 个答案:

答案 0 :(得分:1)

您使用/作为pattern delimiter,因此/\.([^\.]*$)/后的所有内容都被视为pattern modifier(我猜$valuea开头)。

我会切换到不同的分隔符(~)并使用preg_quote()

preg_match('~\.([^\.]*$)/' . preg_quote( $value, '~') . ')(;q=[0-9]\\.[0-9])?$~'

另请注意正则表达式末尾的~