首页 > php教程 > PHP源码 > 正文

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

PHP中文网
发布: 2016-05-25 17:09:33
原创
1181人浏览过

<?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);
    }
}
登录后复制

相关标签:
php
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
热门推荐
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号