返回顶部

收藏

搜索引擎来源关键字分析程序

更多
<?php
/**
 * 分析搜索引擎到来的关键字
 * 
 * 
 * @author zhangjun
 * @charset utf-8
 */
class searchTerms {
    public static $banUrl = array('qq.com','localhost'); //不解析的referer 有利于加快程序处理速度

    public static $parseHost = array('baidu','google','360','soso');  //能解析的referer

    /**
     * 主方法
     * @return boolean || array
     */
    public static function keyword(){
        if(!isset($_SERVER['HTTP_REFERER']))
            return false;
        $referer = trim($_SERVER['HTTP_REFERER']);
        $refererArr = parse_url($referer);

        //判断refer是否来至不需要分析的地址。
        if(self::inBanUrl($refererArr['host'])) 
            return false;

        $hasParseFun = false;
        foreach(self::$parseHost as $host) {
            if(strpos ($refererArr['host'],$host) !== false) { 
                $hasParseFun = true;
                break;
            }   
        }

        if(!$hasParseFun)
            return false;

        $queryVars = array();
        parse_str($refererArr['query'], $queryVars);
        //调用每个搜索引擎的单独处理方法
        $method = 'parse'.ucfirst($host);
        return self::$method($queryVars);
    }
    /* 已取消使用正则的方式。
    public static function buldPattern($rule) {
        $host = str_replace('.', '\\.', $rule['host']);
        $patterns = array();
        foreach ($rule['key'] as $key) {
            $patterns[] = $host . '.+?'.$key.'=';
        } 
        return "/(?:" . implode('|', $patterns).')([^&]*)/';
    }*/
    public static function inBanUrl($referer) {
        foreach(self::$banUrl as $url) {
            if(strpos($url, $referer) !== false) 
                return true;
        }
        return false;
    }

    public static function parseBaidu($params)
    {
        $searchTerms = '';
        if(isset($params['kw'])) {
            $searchTerms = $params['kw'];
        } else if(isset ($params['wd'])) {
            $searchTerms = $params['wd'];
        } else if(isset ($params['word'])) {
            $searchTerms = $params['word'];
        }

        return isset($params['ie']) && (strtolower($params['ie']) == 'utf-8') ? $searchTerms : iconv('gbk', 'utf-8', $searchTerms);
    }

    public static function parseGoogle($params)
    {
        $searchTerms = '';
        if(isset($params['q'])) {
            $searchTerms = $params['q'];
        }
        return isset($params['ie']) && ($params['ie'] == "GB") ? iconv('gbk', 'utf-8', $searchTerms) : $params['q'];
    }

    public static function parse360($params)
    {
        $searchTerms = '';
        if(isset($params['q'])) {
            $searchTerms = $params['q'];
        }
        return $searchTerms;
    }

    public static function parseSoso($params)
    {
        $searchTerms = '';
        if(isset($params['w'])) {
            $searchTerms = $params['w'];
        }
        return iconv('gbk', 'utf-8', $searchTerms);
    }
}
//该片段来自于http://outofmemory.cn

标签:php,网络

收藏

0人收藏

支持

0

反对

0

相关聚客文章
  1. lucifer 发表 2011-10-25 11:33:44 ubuntu10.10下配置Apache+MySQL+PHP【结合网络文章】
  2. 郑永 发表 2013-09-14 16:50:26 介绍一款优秀的php小偷程序
  3. 郑永 发表 2013-09-20 00:34:38 手机搭建php+mysql完美运行wordpress
  4. 老高 发表 2016-12-19 06:38:00 PHP判断网络连通
  5. 持续的思考 发表 2012-09-05 08:43:57 php异步i/o非阻塞网络编程
  6. moxie 发表 2014-10-04 16:25:19 微博GIF动画展示加速
  7. xinlu 发表 2018-08-16 00:55:50 PHP中安装主从插件
  8. root 发表 2015-03-22 05:38:02 php中的XML DOM(11)
  9. 贾新明 发表 2015-02-27 07:39:33 [转载]linux中怎么找到nginx、apache、php、mysql配置文件路径
  10. Reeze Xia 发表 2012-07-22 12:40:00 怎样获取PHP函数默认参数常量名
  11. 博主 发表 2012-11-16 00:00:00 单PHP文件原生js版PhilnaSay
  12. root 发表 2015-04-14 08:30:01 PHP静态成员变量和非静态成员变量

发表评论