自定义用户代理解析器

时间:2013-07-31 16:08:31

标签: php regex parsing user-agent

用于解析我发现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;)

现在我该如何从此代理中提取PaperLBookL以及Verx32cx64c

2 个答案:

答案 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 \(([^;]+);([^;]+);([^;]+);([^;]+);([^;]+);([^;]+)

更通用的方法是

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