0

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

70.90.184.9 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/536.30.1 (KHTML, like Gecko) 版本/6.0.5 Safari/536.30.1

我需要拉出来的数据应该是这样的:

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

是否有正则表达式可以在 PHP 中轻松获取 IP?操作系统呢?

谢谢!

4

3 回答 3

2

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

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

于 2013-05-08T00:15:51.563 回答
2

为此使用该功能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));
于 2013-05-08T00:10:36.357 回答
0

此模式为您的示例完成了工作,但我不确定另一个字符串是否相同:

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

如果您想要更通用的模式,请使用一些可能的示例更新您的帖子,这些示例可能有助于确定更全局的语法。然而,Sverri 建议的正则表达式替代品可能是一个好方法。

于 2013-05-08T00:42:35.397 回答