用于解析我发现ua-parser的用户代理,这是非常强大的,但我不想要解析浏览器用户代理,我想解析这样的自定义用户代理:
PaperL Installer (Windows; P; 32bit; Ver 2.0.3; OS: 5.1.2600 SP 3.0 NT; x32c;)
BookL Installer (Windows; B; 64bit; Ver 1.0; OS: 6.1.7601 SP 1.0 NT; x64c;)
现在我该如何从此代理中提取PaperL
或BookL
以及Ver
和x32c
或x64c
?
答案 0 :(得分:0)
这可以做到这一点:)你不需要正则表达式。您也可以轻松获得其他字符串。
function trim_string($s)
{
$s = trim($s, ";");
$s = trim($s, ";)");
return $s;
}
$string = "PaperL Installer (Windows; P; 32bit; Ver 2.0.3; OS: 5.1.2600 SP 3.0 NT; x32c;)";
$array = explode(" ", $string);
$firstItem = trim_string($array[0]); // return PaperL
$version = trim_string($array[6]); // return 2.0.3
$last = trim_string(end($array)); // return x32c
echo $firstItem. " ". $version. " ". $last; // return PaperL 2.0.3 x32c
答案 1 :(得分:0)
此正则表达式匹配您的用户代理的每个组件:
(\w+) Installer \(([^;]+);([^;]+);([^;]+);([^;]+);([^;]+);([^;]+)
更通用的方法是
([^(]+)\(([^;]+);([^;]+);([^;]+);([^;]+);([^;]+);([^;]+)