如何用PHP从这个字符串中提取数据?使用RegEx?

时间:2013-05-08 00:08:41

标签: php regex string substring

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

  

70.90.184.9 Mozilla / 5.0(Macintosh; Intel Mac OS X 10_8_4)AppleWebKit / 536.30.1(KHTML,与Gecko一样)Version / 6.0.5 Safari / 536.30.1

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

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

是否有一个RegEx可以在PHP中轻松获取IP?操作系统怎么样?

谢谢!

3 个答案:

答案 0 :(得分: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));

答案 1 :(得分:2)

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

解析用户代理字符串非常困难且不可靠。上述项目可能是获取可用用户代理信息的最佳方式。话虽如此,请不要使用用户代理字符串来表示“此网站仅支持浏览器X”消息 - 人们会讨厌你。

答案 2 :(得分:0)

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

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

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