我正在尝试制作一个移动检测类,它应该将用户代理剥离成一个简单的基本字符串,如下所示:
输出: Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (,类似Gecko) Chrome/* Safari/*
由此:
输入:(HTTP_USER_AGENT) Mozilla/5.0 (X11;Linux x86_64) AppleWebKit/537.17 (,类似壁虎) Chrome/24.0.1312.69 Safari/537.17
我使用这个:/[0-9.-]{4,}/i模式来去除数字,我得到:
上述模式的结果: Mozilla/5.0 (X11;Linux x86_64) AppleWebKit/* (X11,类似于壁虎) Chrome/* Safari/*
但是我的问题是如何删除X11;,我想要一个模式,它将删除第一个开口括号之后的所有东西,直到第一个空空间,我认为这是正确的方法。可以接受的替代办法是,完全可以用一种模式去掉括号。
有什么建议吗?
PS:我需要这个来解决移动检测和浏览器依赖的问题。所以请不要投反对票!
PS2:它的主要目的是检测移动客户端和桌面。在此之后,我将对其进行调整,为操作系统提供信息,等等。
发布于 2013-02-07 23:16:48
替换X11;而不是KHTML
preg_replace('/\([^,)]*? ([^\)]+)/','(*\1*',$agent);在这里解释演示:http://regex101.com/r/vL6gT1
发布于 2013-02-07 23:18:01
试着使用
preg_replace('/[0-9.-]{4,} #your original regex
| # OR
( # start capture
\( # open paren
) # end capture (so we can put the paren back)
[^\s]+ # any number of non-space characters
\d # a digit
[^\s]+ # the remaining non-space characters (including other digits)
\s # the final space
/xi', '\1', $str);https://stackoverflow.com/questions/14762473
复制相似问题