正则表达式只取最后一个值

问题描述 投票:0回答:1

我的问题是,当正则表达式获取任何值时,它只取最后一个正确的值

输入

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”。

谢谢

php regex regex-group regexp-replace
1个回答
0
投票

您面临的问题是代码正在使用 $os_array 中找到的最后一个匹配项覆盖 $os_platform 变量。为了达到您想要的结果,您可以修改代码以在找到匹配项后停止搜索。 https://i.stack.imgur.com/69kll.png

© www.soinside.com 2019 - 2024. All rights reserved.