USER_AGENT: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0
想通过 USER AGENT 判断用户的操作系统类型,如果是 Windows 获取其中的内核版本号。比如上面的一个 USER AGENT,现在要把 Windows NT 6.3 中的内核版本 6.3 取出给一个变量要如何写?
不会 PHP,希望能够得到详细的指点。
1
sb 2015-02-22 15:01:08 +08:00 via Android 1
正则表达式取括号内的内容 把结果以;分割
|
3
oott123 2015-02-22 15:05:24 +08:00 via Android
/Windows NT ([0-9.])+;/
|
5
oott123 2015-02-22 15:12:05 +08:00 via Android 2
|
6
huijiewei 2015-02-22 15:24:22 +08:00 1
|
7
MinonHeart 2015-02-22 15:31:48 +08:00 1
@oott123
<?php //mytest $agent = 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36'; preg_match('/Windows NT ([0-9.])+;/', $agent, $full); preg_match('/([0-9.])+/', $full[0], $lite); $version = $lite[0]; echo $version; ?> 我这样写能够取得 6.3,不知道有没有什么问题 |
9
oott123 2015-02-22 15:45:33 +08:00 via Android
@MinonHeart 呃,$full[1] 不就有了…
|
10
MinonHeart 2015-02-22 15:54:43 +08:00
@oott123 $full[1]是 3 不是 6.3
|
11
MinonHeart 2015-02-22 15:56:09 +08:00 1
@oott123 preg_match('/Windows NT ([0-9.]+);/', $agent, $full);
这样写 $full[1] 就有了,写错不要打我 |
12
msxcms 2015-02-22 16:40:28 +08:00
不会正则就explode或者strstr吧
|
13
ven 2015-02-22 17:23:11 +08:00
这样干的话,还要考虑其他系统的时候怎么显示噢。
|
14
oott123 2015-02-22 18:32:24 +08:00
@MinonHeart 233 括号打错位置了,你写的是对的。
|
15
codegear 2015-02-22 19:59:25 +08:00
|
19
MaiCong 2015-02-22 23:59:51 +08:00
建议楼主善用搜索,很多问题搜一下就解决了。如果在这里等别人回复,自己得到了答案,可是过程是什么你知道吗。
|
20
jimmy66 2015-02-23 00:10:18 +08:00
这和会不会PHP关系不大,你应该学下正则表达式。花点时间你不会后悔的
|
23
jimmy66 2015-02-26 16:51:55 +08:00
@MinonHeart 其实我想问下为什么这种写法$full[1]匹配的都是最后一个数字,能做到 ([0-9.])+ 一个个对应匹配吗? 比如 6->1 . ->2 3->3
|
24
MinonHeart 2015-02-26 19:40:19 +08:00 1
@jimmy66
<?php //mytest $agent = 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36'; preg_match('/Windows NT ([0-9.]+);/', $agent, $version); echo $version[1][0] . "<br>"; echo $version[1][1] . "<br>"; echo $version[1][2] . "<br>"; //可以加个判断 $version[1] 的长度进行循环输出 //也考虑到 Windows NT 10.0 这种内核版本号的长度不定 ?> |