【问题标题】:PHP- Warning: preg_match(): Unknown modifier '(' [duplicate]PHP-警告:preg_match():未知修饰符'('[重复]
【发布时间】:2018-04-27 06:17:03
【问题描述】:

我正在使用 preg match 检查浏览器代理和版本。但是当我将我的 php 版本 5.3 更新到 5.4 时发现错误

preg_match( '/Mozilla/([0-9].[0-9]{1,2})/',$HTTP_USER_AGENT,$log_version)

知道如何解决这个问题吗?

【问题讨论】:

  • 转义反斜杠,因为它是一个特殊的正则表达式运算符'/Mozilla\/([0-9].[0-9]{1,2})/'
  • 我在 preg_match('/Netscape([0-9])/([0-9].[0-9]{1,2})/',$HTTP_USER_AGENT, $log_version1)。所以我需要在第二个 / 之前添加 \ 像这样 preg_match('/Netscape([0-9])\/([0-9].[0-9]{1,2})/',$HTTP_USER_AGENT, $log_version1)
  • 阅读regular expression pattern delimiters。您的 regex 在模式中间包含一个分隔符。
  • @AgniusVasiliauskas 在问题中发布的regex 中没有反斜杠 (\ )。

标签: php regex


【解决方案1】:

在第二个/(正斜杠)之前应用\(反斜杠)来转义它

preg_match( '/Mozilla\/([0-9].[0-9]{1,2})/',$HTTP_USER_AGENT,$log_version);

preg_match('/Netscape([0-9])\/([0-9].[0-9]{1,2})/',$HTTP_USER_AGENT,$log_version1);

注意:-preg_match() 中的开始和结束/(delementer) 之间的任何/ 都需要转义以使其正常运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-01
    相关资源
    最近更新 更多