0

为了解析用户代理,我找到了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;)

现在我如何从这个代理获取PaperLorBookLVerAnd x32cor ?x64c

4

2 回答 2

0

此正则表达式匹配您的用户代理的每个组件:

(\w+) Installer \(([^;]+);([^;]+);([^;]+);([^;]+);([^;]+);([^;]+)

更通用的方法是

([^(]+)\(([^;]+);([^;]+);([^;]+);([^;]+);([^;]+);([^;]+)
于 2013-07-31T16:34:30.660 回答
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
于 2013-07-31T16:31:12.973 回答