我的问题是当regex得到任何值时,它只取最后一个正确的值
输入
Mozilla/5.0 (Windows Phone 10.0; Android 6.0.1; SAMSUNG; GT-I8750) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Mobile Safari/537.36 Edge/15.15063
我得到的输出
Android
我想要的真实的输出
Windows Phone 10.0
我的代码
function getOS() {
global $user_agent;
$os_platform = "Unknown OS Platform";
$os_array = array(
'/Windows Phone 10.0/i' => 'Windows Phone 10',
'/android/i' => 'Android',
);
foreach ($os_array as $regex => $value) {
if (preg_match($regex, $user_agent)) {
$os_platform = $value;
}
}
return $os_platform;
}
它将替换为他获得的最后一个正确匹配...我只想拿“Windows Phone 10. 0”,即使它在我的输入中找到“Android”。
谢谢
1条答案
按热度按时间gudnpqoy1#
您所面临的问题是代码正在用$os_array中找到的最后一个匹配项覆盖$os_platform变量。要获得所需的结果,可以修改代码,以便在找到匹配项后停止搜索。