用户代理类主要是用来处理UA的,顺带处理一下支持的语言、字符集之类的。UA的处理最重要的是对应匹配规则,在这里表现为对应的config文件。对于UA的处理分了四个维度:平台类型、爬虫类型、浏览器类型、移动设备类型,后三个其实是有交叉的。

具体的实现上就是结合正则和config文件匹配,这个library有大段互相雷同的代码。

我觉得写得比较好的是这么一段:

protected function _compile_data()
{
    $this->_set_platform();

    foreach (array('_set_robot', '_set_browser', '_set_mobile') as $function)
    {
        if ($this->$function() === TRUE)
        {
            break;
        }
    }
}

至于对字符集和语言的处理,说白了就是对$_SERVER中对应属性的分析,相关HTTP协议字段可以作为补充了解一下。

results matching ""

    No results matching ""