【问题标题】:preg_match issues after php upgradephp升级后的preg_match问题
【发布时间】:2014-01-13 09:54:04
【问题描述】:

在正则表达式方面,我完全是新手。我收到这样的错误:

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 上运行。

提前致谢。

【问题讨论】:

    标签: php expression match


    【解决方案1】:

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

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

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

    还要注意正则表达式末尾的~

    【讨论】:

    • 感谢您解决了这个问题。这是朋友网站的旧代码,所以我不想修改它,因为我不擅长正则表达式。
    猜你喜欢
    • 2020-11-04
    • 2014-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-10
    相关资源
    最近更新 更多