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 に答える