我如何用PHP从这个字符串中提取数据?使用正则表达式


How can I pull data out of this string with PHP? Using RegEx?

这是我从服务器得到的字符串:

Mozilla/5.0 (Macintosh;AppleWebKit/536.30.1 (KHTML, like Gecko) Version/6.0.5 Safari/536.30.1

我需要提取的数据应该是这样的:

$ip = "70.90.184.9"
$os = "Intel Mac OS X 10_8_4"

在PHP中是否有一个RegEx可以轻松获得IP ?那么操作系统呢?

谢谢!

使用get_browser()函数。这是一个隐藏的宝藏;)电话:

$str = '70.90.184.9 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/536.30.1 (KHTML, like Gecko) Version/6.0.5 Safari/536.30.1';
var_dump(get_browser($str));

使用PHPBrowsCap项目。它是一个独立的类,试图绕过get_browser()函数的限制。

解析用户代理字符串是出了名的困难和不可靠。上述项目可能是获取可用用户代理信息的最佳方式。话虽如此,请不要使用用户代理字符串来发布"此网站只支持浏览器X"的消息——人们会因此讨厌你的。

此模式为您的示例做的工作,但我不确定它将是相同的另一个字符串:

^(['d.]++)[^(]++'('S++'s([^)]++)

如果你想要一个更通用的模式,请更新你的帖子与一些可能的例子,这可能是有用的,以确定一个更全局的语法。然而,Sverri建议的regex替代品可能是一种好方法。