Я использую скрипт для обнаружения браузера и его версии, на который несколько раз ссылаются в get_browser на странице php.net.
Файл, содержащий сценарий, сохраняется как 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]: Ошибка компиляции: нераспознанный символ после (? ‹По смещению 3 в /file.php в строке 48
Как нужно обновить шаблон, чтобы он работал правильно с PHP 5.1.6?