PHP获取搜索引擎关键字来源的函数(支持百度和谷歌等搜索引擎)
2015-01-24信息快讯网
通过网站功能来增加一字段,获取来源关键字,如何获取来源关键字,代码发在下面,里面包含(百度、谷歌、雅虎、搜狗、搜搜、必应、有道)几大搜索引擎的获取方法,代码中均注明,希望对你有帮助,分享一下
最近遇到一个项目,客户需要一个功能,一个商品销售下单需要知道用户下单是从哪个途径来的,认为客服软件(53客服)和站长统计只能满足工作时间,及晚上下班和周六日休息,客服不在线,用户下单会不知道该订单的具体来源,所以嘛,又只能通过网站功能来增加一字段,获取来源关键字,如何获取来源关键字,代码发在下面,里面包含(百度、谷歌、雅虎、搜狗、搜搜、必应、有道)几大搜索引擎的获取方法,代码中均注明,希望对你有帮助,分享一下代码如下:
<?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"]; } ?>
有一点要记住,由于各搜索引擎的页面编码不一样,有的是GBK,有的是UTF8,所以在获取时会有不同对字符编码的转换
转载请注明:http://www.netxu.com/program/12.html
下面是另外一个函数,也可以参考下
<?php $_SERVER['HTTP_REFERER']='http://www.baidu.com/s?wd=http://www.jb51.net'; echo save_www_iiwnet_com_keyword('http://www.baidu.com/s?wd=http://www.jb51.net','http://www.baidu.com/s?wd=http://www.jb51.net'); function save_www_iiwnet_com_keyword($domain,$path){ if(strpos($domain, 'google.com.tw')!==false && preg_match('/q=([^&]*)/i',$path,$regs)){ $searchengine = 'GOOGLE TAIWAN'; $keywords = urldecode($regs[1]); // google taiwan } if(strpos($domain,'google.cn')!==false && preg_match('/q=([^&]*)/i',$path,$regs)){ $searchengine = 'GOOGLE CHINA'; $keywords = urldecode($regs[1]); // google china } if(strpos($domain,'google.com')!==false && preg_match('/q=([^&]*)/i',$path,$regs)){ $searchengine = 'GOOGLE'; $keywords = urldecode($regs[1]); // google }elseif(strpos($domain,'baidu.')!==false && preg_match('/wd=([^&]*)/i',$path,$regs)){ $searchengine = 'BAIDU'; $keywords = urldecode($regs[1]); // baidu }elseif(strpos($domain,'baidu.')!==false && preg_match('/word=([^&]*)/i',$path,$regs)){ $searchengine = 'BAIDU'; $keywords = urldecode($regs[1]); // baidu }elseif(strpos($domain,'114.vnet.cn')!== false && preg_match('/kw=([^&]*)/i',$path,$regs)){ $searchengine = 'CT114'; $keywords = urldecode($regs[1]); // ct114 }elseif(strpos($domain,'iask.com')!==false && preg_match('/k=([^&]*)/i',$path,$regs)){ $searchengine = 'IASK'; $keywords = urldecode($regs[1]); // iask }elseif(strpos($domain,'soso.com')!==false && preg_match('/w=([^&]*)/i',$path,$regs)){ $searchengine = 'SOSO'; $keywords = urldecode($regs[1]); // soso }elseif(strpos($domain, 'sogou.com')!==false && preg_match('/query=([^&]*)/i',$path,$regs)){ $searchengine = 'SOGOU'; $keywords = urldecode($regs[1]); // sogou }elseif(strpos($domain,'so.163.com')!==false && preg_match('/q=([^&]*)/i',$path,$regs)){ $searchengine = 'NETEASE'; $keywords = urldecode($regs[1]); // netease }elseif(strpos($domain,'yodao.com')!== false && preg_match('/q=([^&]*)/i',$path,$regs)){ $searchengine = 'YODAO'; $keywords = urldecode($regs[1]); // yodao }elseif(strpos($domain,'zhongsou.com')!==false && preg_match('/word=([^&]*)/i',$path,$regs)){ $searchengine = 'ZHONGSOU'; $keywords = urldecode($regs[1]); // zhongsou }elseif(strpos($domain,'search.tom.com')!==false && preg_match('/w=([^&]*)/i',$path,$regs)){ $searchengine = 'TOM'; $keywords = urldecode($regs[1]); // tom }elseif(strpos($domain,'live.com')!==false && preg_match('/q=([^&]*)/i',$path,$regs)){ $searchengine = 'MSLIVE'; $keywords = urldecode($regs[1]); // MSLIVE }elseif(strpos($domain, 'tw.search.yahoo.com')!==false && preg_match('/p=([^&]*)/i',$path,$regs)){ $searchengine = 'YAHOO TAIWAN'; $keywords = urldecode($regs[1]); // yahoo taiwan }elseif(strpos($domain,'cn.yahoo.')!==false && preg_match('/p=([^&]*)/i',$path,$regs)){ $searchengine = 'YAHOO CHINA'; $keywords = urldecode($regs[1]); // yahoo china }elseif(strpos($domain,'yahoo.')!==false && preg_match('/p=([^&]*)/i',$path,$regs)){ $searchengine = 'YAHOO'; $keywords = urldecode($regs[1]); // yahoo }elseif(strpos($domain,'msn.com.tw')!==false && preg_match('/q=([^&]*)/i',$path,$regs)){ $searchengine = 'MSN TAIWAN'; $keywords = urldecode($regs[1]); // msn taiwan }elseif(strpos($domain,'msn.com.cn')!==false && preg_match('/q=([^&]*)/i',$path,$regs)){ $searchengine = 'MSN CHINA'; $keywords = urldecode($regs[1]); // msn china }elseif(strpos($domain,'msn.com')!==false && preg_match('/q=([^&]*)/i',$path,$regs)){ $searchengine = 'MSN'; $keywords = urldecode($regs[1]); // msn } return $keywords; }
解析file_get_contents模仿浏览器头(user_agent)获取数据
使用PHP获取汉字的拼音(全部与首字母)
解析获取优酷视频真实下载地址的PHP源代码
Youku 视频绝对地址获取的方法详解
解析php 版获取重定向后的地址(代码)
解析PHP对现有搜索引擎的调用
探讨PHP中OO之静态关键字以及类常量的详解
php实现自动获取生成文章主题关键词功能的深入分析
PHP屏蔽蜘蛛访问代码及常用搜索引擎的HTTP_USER_AGENT
php自动给文章加关键词链接的函数代码
PHP中文分词 自动获取关键词介绍
php curl 伪造IP来源的实例代码
PHP判断文件是否存在、是否可读、目录是否存在的代码
PHP HTML JavaScript MySQL代码如何互相传值的方法分享
PHP获取网址的顶级域名函数代码
php获取ip的三个属性区别介绍(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
PHP获取用户的浏览器与操作系统信息的代码
PHP 利用AJAX获取网页并输出的实现代码(Zjmainstay)
PHP写的获取各搜索蜘蛛爬行记录代码
PHP原生模板引擎 最简单的模板引擎
php 多关键字 高亮显示实现代码
TMDPHP 模板引擎使用教程
Php Ctemplate引擎开发相关内容
PHP判断搜索引擎蜘蛛并自动记忆到文件的代码
php站内搜索并高亮显示关键字的实现代码
PHP数组 为文章加关键字连接 文章内容自动加链接
Pain 全世界最小最简单的PHP模板引擎 (普通版)
php 判断访客是否为搜索引擎蜘蛛的函数代码
PHP中static关键字原理的学习研究分析
php中获取关键词及所属来源搜索引擎名称的代码