开发者

Regular expression to parse useragent string

开发者 https://www.devze.com 2023-01-06 07:49 出处:网络
I need extract data from a string. Heres an example: Mozilla/5.0 (Macintosh; U; PPC Mac OS X; tr-tr) AppleWebKit/418 (KHTML, like

I need extract data from a string. Heres an example:

Mozilla/5.0 (Macintosh; U; PPC Mac OS X; tr-tr) AppleWebKit/418 (KHTML, like Gecko) Safari/417.9.3

I want to get what's after the "Safari/" (417.9.3) but:

  1. The "Safari" string can be in any character case and can be anywhaere in the string.
  2. The version is separated from "Safari" by "/", " /", "/ ", " / " or any whitespace.
  3. The version string end by any whitespace, ")", "(", ";", or the end of the str开发者_JAVA技巧ing.

Anyone can help me build this up?

Thanks!


preg_match("#Safari(\s+|/\s*)([^)(;]+)#i", $_SERVER['HTTP_USER_AGENT'], $results);

The i at the end means "case insensitive", which answers criteria one.

(\s+|\s*/\s*)? matches either at least one whitespace character or a slash preceded and followed by an arbitrary number of whitespace characters (from zero to infinity and beyond), which addresses criteria two.

[^)(;]+ will match as many characters as possible that are not inside the set, which addresses criteria three.


Isn't this similar to the Firefox regex that you asked for before?

/Safari[ \/]+([0-9\.]+)/i
0

精彩评论

暂无评论...
验证码 换一张
取 消