2

我正在使用脚本来检测浏览器及其在php.net上的get_browser页面上多次引用的版本。

包含脚本的文件保存为 UTF-8,实际上它工作正常':

// relevant parts only where $ub stores the browser name like "Safari"
$userAgent = $_SERVER['HTTP_USER_AGENT'];
$known = array('Version', $ub, 'other');
$pattern = '#(?<browser>' . join('|', $known) . ')[/ ]+(?<version>[0-9.|a-zA-Z.]*)#';
preg_match_all($pattern, $userAgent, $matches);

现在我们在使用 PHP 5.1.6 的服务器上运行一个站点。不幸的是,它破坏了正则表达式并显示此警告:

PHP 警告:preg_match_all() [function.preg-match-all]: 编译失败: (?< 在第 48 行 /file.php 中的偏移量 3 后出现无法识别的字符

必须如何更新模式才能在 PHP 5.1.6 中正常工作?

4

1 回答 1

4

您尝试使用的语法直到 PHP 5.2.2 才引入。(?<name>pattern). 您应该可以改用它(?P<name>pattern)

于 2013-02-14T14:34:12.710 回答