• PHP获取搜索引擎关键词


    有时候我们需要知道用户通过哪个搜索引擎,通过拿个关键词访问我们页面,当然js也可以实现,这里介绍下php的实现代码,包含(百度、谷歌、雅虎、搜狗、搜搜、必应、有道)几大搜索引擎的获取方法。

    //获取来自搜索引擎入站时的关键词 
    function get_keyword($url,$kw_start) 
    { 
    $start=stripos($url,$kw_start); 
    $url=substr($url,$start+strlen($kw_start)); 
    $start=stripos($url,'&'); 
    if ($start>0) 
    { 
    $start=stripos($url,'&'); 
    $s_s_keyword=substr($url,0,$start); 
    } 
    else 
    { 
    $s_s_keyword=substr($url,0); 
    } 
    return $s_s_keyword; 
    } 
     
    $url=isset($_SERVER['HTTP_REFERER'])?$_SERVER['HTTP_REFERER']:'';//获取入站url。 
    $search_1="google.com"; //q= utf8 
    $search_2="baidu.com"; //wd= gbk 
    $search_3="yahoo.cn"; //q= utf8 
    $search_4="sogou.com"; //query= gbk 
    $search_5="soso.com"; //w= gbk 
    $search_6="bing.com"; //q= utf8 
    $search_7="youdao.com"; //q= utf8 
     
    $google=preg_match("/{$search_1}/",$url);//记录匹配情况,用于入站判断。 
    $baidu=preg_match("/{$search_2}/",$url); 
    $yahoo=preg_match("/{$search_3}/",$url); 
    $sogou=preg_match("/{$search_4}/",$url); 
    $soso=preg_match("/{$search_5}/",$url); 
    $bing=preg_match("/{$search_6}/",$url); 
    $youdao=preg_match("/{$search_7}/",$url); 
    $s_s_keyword=""; 
    $bul=$_SERVER['HTTP_REFERER']; 
    //获取没参数域名 
    preg_match('@^(?:http://)?([^/]+)@i',$bul,$matches); 
    $burl=$matches[1]; 
    //匹配域名设置 
    $curl="www.netxu.com"; 
    if($burl!=$curl){ 
    if ($google) 
    {//来自google 
    $s_s_keyword=get_keyword($url,'q=');//关键词前的字符为"q="。 
    $s_s_keyword=urldecode($s_s_keyword); 
    $urlname="谷歌:"; 
    $_SESSION["urlname"]=$urlname; 
    $_SESSION["s_s_keyword"]=$s_s_keyword; 
    //$s_s_keyword=iconv("GBK","UTF-8",$s_s_keyword);//引擎为gbk 
    } 
    else if($baidu) 
    {//来自百度 
    $s_s_keyword=get_keyword($url,'wd=');//关键词前的字符为"wd="。 
    $s_s_keyword=urldecode($s_s_keyword); 
    $s_s_keyword=iconv("GBK","UTF-8",$s_s_keyword);//引擎为gbk 
    $urlname="百度:"; 
    $_SESSION["urlname"]=$urlname; 
    $_SESSION["s_s_keyword"]=$s_s_keyword; 
    } 
    else if($yahoo) 
    {//来自雅虎 
    $s_s_keyword=get_keyword($url,'q=');//关键词前的字符为"q="。 
    $s_s_keyword=urldecode($s_s_keyword); 
    //$s_s_keyword=iconv("GBK","UTF-8",$s_s_keyword);//引擎为gbk 
    $urlname="雅虎:"; 
    $_SESSION["urlname"]=$urlname; 
    $_SESSION["s_s_keyword"]=$s_s_keyword; 
    } 
    else if($sogou) 
    {//来自搜狗 
    $s_s_keyword=get_keyword($url,'query=');//关键词前的字符为"query="。 
    $s_s_keyword=urldecode($s_s_keyword); 
    $s_s_keyword=iconv("GBK","UTF-8",$s_s_keyword);//引擎为gbk 
    $urlname="搜狗:"; 
    $_SESSION["urlname"]=$urlname; 
    $_SESSION["s_s_keyword"]=$s_s_keyword; 
    } 
    else if($soso) 
    {//来自搜搜 
    $s_s_keyword=get_keyword($url,'w=');//关键词前的字符为"w="。 
    $s_s_keyword=urldecode($s_s_keyword); 
    $s_s_keyword=iconv("GBK","UTF-8",$s_s_keyword);//引擎为gbk 
    $urlname="搜搜:"; 
    $_SESSION["urlname"]=$urlname; 
    $_SESSION["s_s_keyword"]=$s_s_keyword; 
    } 
    else if($bing) 
    {//来自必应 
    $s_s_keyword=get_keyword($url,'q=');//关键词前的字符为"q="。 
    $s_s_keyword=urldecode($s_s_keyword); 
    //$s_s_keyword=iconv("GBK","UTF-8",$s_s_keyword);//引擎为gbk 
    $urlname="必应:"; 
    $_SESSION["urlname"]=$urlname; 
    $_SESSION["s_s_keyword"]=$s_s_keyword; 
    } 
    else if($youdao) 
    {//来自有道 
    $s_s_keyword=get_keyword($url,'q=');//关键词前的字符为"q="。 
    $s_s_keyword=urldecode($s_s_keyword); 
    //$s_s_keyword=iconv("GBK","UTF-8",$s_s_keyword);//引擎为gbk 
    $urlname="有道:"; 
    $_SESSION["urlname"]=$urlname; 
    $_SESSION["s_s_keyword"]=$s_s_keyword; 
    } 
    else{ 
    $urlname=$burl; 
    $s_s_keyword=""; 
    $_SESSION["urlname"]=$urlname; 
    $_SESSION["s_s_keyword"]=$s_s_keyword; 
    } 
    $s_urlname=$urlname; 
    $s_urlkey=$s_s_keyword; 
    } 
    else{ 
    $s_urlname=$_SESSION["urlname"]; 
    $s_urlkey=$_SESSION["s_s_keyword"]; 
    } 

    由于各搜索引擎的页面编码不一样,有的是GBK,有的是UTF8,所以在获取时会有不同对字符编码的转换.

    https://blog.csdn.net/php_80/article/details/43452307

  • 相关阅读:
    pytroch resnet构建过程理解
    python 参数前星号(*)的用法
    Win10 + Visual Studio 2017 下 OpenCV无法显示图像的问题
    模板类中的友元函数
    caltech行人检测数据集上的论文
    (转)使用K-S检验一个数列是否服从正态分布、两个数列是否服从相同的分布
    matplotlib较好的博客
    Python 获取时间戳
    (转载)keras使用入门及3D卷积神经网络资源
    linux 下的字典安装
  • 原文地址:https://www.cnblogs.com/lxwphp/p/9811824.html
Copyright © 2020-2023  润新知