正则匹配的一点问题,快帮我匹配一下 [ 2.0 版本 ]
$str = "Mozilla/5.0 (Linux; Android 5.1.1; Nexus 6 Build/LYZ28E) AppleWebKit/537.36"
怎么能匹配到这中间的Nexus 6
呀,
以Android开头,以Build结尾?
啊。怎么匹配呀,正则这儿实在是太弱了。
最佳答案
-
不一定要写正则啊,截取字符串也可以
如果是安卓客户端的请求,这个信息头基本上都是这些格式,
Dalvik/1.6.0 (Linux; U; Android 4.3; vivo X3L Build/JLS36C)Mozilla/5.0 (Linux; U; Android 2.3.6; zh-cn; GT-S7500 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML
, like Gecko) Version/4.0 Mobile Safari/533.1Mozilla/5.0 (Linux; Android
5.1.1; vivo X7 Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36个人认为Build才是查找的关键,可以这么做
/* * 查找Build字符串所在的位置,并截取字符串到这个位置为止 * 得到:Mozilla/5.0 (Linux; Android 5.1.1; Nexus 6 */ $str= substr($str, 0, strpos($str, "Build")); /* * 查找";"符号最后出现的位置,并且以这个位置开始截取字符串,直到最后 * 得到: Nexus 6 */ $str= substr($str, strrpos($str,";")+1, strlen($str)); /* * 去除前后空格 */ $str=trim($str); echo $str;
其他 3 个回答
-
Lan_allofme 回答于 2016-09-30 16:30 举报
$str = "Mozilla/5.0 (Linux; Android 5.1.1; Nexus 6 Build/LYZ28E) AppleWebKit/537.36"; $rule = "/[\s\S]*(Nexus[\s]*6)[\s\S]*/i"; preg_match($rule,$str,$matches); echo $matches[1]; 拿去试试吧^.^
xczizz 比尔吉沃特
注册时间:2016-03-08
最后登录:2020-11-09
在线时长:97小时50分
最后登录:2020-11-09
在线时长:97小时50分
- 粉丝6
- 金钱4967
- 威望90
- 积分6837