我正在使用脚本来检测浏览器及其在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 中正常工作?