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,希望能够得到详细的指点。
|      1sb      2015-02-22 15:01:08 +08:00 via Android  1 正则表达式取括号内的内容 把结果以;分割 | 
|  |      3oott123      2015-02-22 15:05:24 +08:00 via Android /Windows NT ([0-9.])+;/ | 
|  |      5oott123      2015-02-22 15:12:05 +08:00 via Android  2 | 
|  |      6huijiewei      2015-02-22 15:24:22 +08:00  1 | 
|  |      7MinonHeart      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,不知道有没有什么问题 | 
|  |      9oott123      2015-02-22 15:45:33 +08:00 via Android @MinonHeart 呃,$full[1] 不就有了… | 
|  |      10MinonHeart      2015-02-22 15:54:43 +08:00 @oott123 $full[1]是 3 不是 6.3 | 
|  |      11MinonHeart      2015-02-22 15:56:09 +08:00  1 @oott123 preg_match('/Windows NT ([0-9.]+);/', $agent, $full); 这样写 $full[1] 就有了,写错不要打我 | 
|  |      12msxcms      2015-02-22 16:40:28 +08:00 不会正则就explode或者strstr吧 | 
|  |      13ven      2015-02-22 17:23:11 +08:00 这样干的话,还要考虑其他系统的时候怎么显示噢。 | 
|  |      14oott123      2015-02-22 18:32:24 +08:00 @MinonHeart 233 括号打错位置了,你写的是对的。 | 
|  |      15codegear      2015-02-22 19:59:25 +08:00 | 
|      19MaiCong      2015-02-22 23:59:51 +08:00 建议楼主善用搜索,很多问题搜一下就解决了。如果在这里等别人回复,自己得到了答案,可是过程是什么你知道吗。 | 
|  |      20jimmy66      2015-02-23 00:10:18 +08:00 这和会不会PHP关系不大,你应该学下正则表达式。花点时间你不会后悔的 | 
|  |      23jimmy66      2015-02-26 16:51:55 +08:00 @MinonHeart 其实我想问下为什么这种写法$full[1]匹配的都是最后一个数字,能做到 ([0-9.])+ 一个个对应匹配吗? 比如 6->1 . ->2 3->3 | 
|  |      24MinonHeart      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 这种内核版本号的长度不定 ?> |