- 帖子
- 212
- 主题
- 189
- 精华
- 0
- 积分
- 1452
- 贡献
- 1134
- 激情
- 1349
- 阅读权限
- 100
- 最后登录
- 2018-6-13
|
[PHP 语言] 分享PHP如何获取网站来路/搜索引擎关键字来源(百度、谷歌、雅虎、搜狗、...
最近遇到一个项目,客户需要一个功能,一个商品销售下单需要知道用户下单是从哪个途径来的,认为客服软件(53客服)和站长统计只能满足工作时间,及晚上下班和周六日休息,客服不在线,用户下单会不知道该订单的具体来源,所以嘛,又只能通过网站功能来增加一字段,获取来源关键字,如何获取来源关键字,代码发在下面,里面包含(百度、谷歌、雅虎、搜狗、搜搜、必应、有道)几大搜索引擎的获取方法,代码中均注明,希望对你有帮助,分享一下
. _0 F2 z) _: b4 R* t6 H/ S! d) ? c$ A. a# j
代码如下:( g5 I0 t" R$ ?7 M* P8 ?
3 R4 D- S }% v3 k- <?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("/\b{$search_1}\b/",$url);//记录匹配情况,用于入站判断。
- $baidu=preg_match("/\b{$search_2}\b/",$url);
- $yahoo=preg_match("/\b{$search_3}\b/",$url);
- $sogou=preg_match("/\b{$search_4}\b/",$url);
- $soso=preg_match("/\b{$search_5}\b/",$url);
- $bing=preg_match("/\b{$search_6}\b/",$url);
- $youdao=preg_match("/\b{$search_7}\b/",$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"];
- }
- ?>
复制代码
" j6 E6 }) f. }3 b% l2 U6 ?% x
O, v! U. l7 m% b( B3 q4 r有一点要记住,由于各搜索引擎的页面编码不一样,有的是GBK,有的是UTF8,所以在获取时会有不同对字符编码的转换9 g% R0 i, V5 b' `8 z5 M* k
: e/ p, [& J1 Y0 ^参考: 网络 http://www.netxu.com/thread-31-1-1.html |
|