2013-02-14 87 views
2

正則表達式休息我使用腳本來檢測所引用get_browser頁上多次php.net瀏覽器及其版本。瀏覽器版本匹配 - 在PHP 5.1.6

包含腳本的文件保存爲UTF-8,實際上它的工作原理fine':

// 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匹配-所有]:編譯失敗:無法識別的字符之後(<在/file.php上偏移3線48

必須如何模式進行更新與PHP正常工作5.1.6?

+3

你真的應該升級到PHP 5.4 – 2013-02-14 14:31:08

+0

@crypticツ是的。但不幸的是,這不在我手中,因爲有人在同一臺服務器上運行Typo3,目前無法更新 - 所以我被告知。 – insertusernamehere 2013-02-14 14:38:32

+2

警告:PHP 5.1在2006年宣佈報廢,並且自那時以來沒有任何錯誤修復或安全更新。 **這是嚴重過時和不安全的,不應該用於生產系統**。 – SDC 2013-02-14 14:39:52

回答

4

你要使用的語法沒有出臺,直到PHP 5.2.2 (?<name>pattern)。您應該能夠用這個代替(?P<name>pattern)

+0

+1非常感謝你分享這個。 – insertusernamehere 2013-02-14 14:53:38