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 で正しく動作するには、パターンをどのように更新する必要がありますか?