PHP获取搜索引擎关键字来源的函数(支持百度和谷歌等搜索引擎)


Posted in PHP onOctober 03, 2012

最近遇到一个项目,客户需要一个功能,一个商品销售下单需要知道用户下单是从哪个途径来的,认为客服软件(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=https://3water.com'; 
echo save_www_iiwnet_com_keyword('http://www.baidu.com/s?wd=https://3water.com','http://www.baidu.com/s?wd=https://3water.com'); 
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; 
}
PHP 相关文章推荐
phpfans留言版用到的数据操作类和分页类
Jan 04 PHP
CodeIgniter php mvc框架 中国网站
May 26 PHP
php中stream(流)的用法
Mar 25 PHP
PHP批量生成静态HTML的简单原理和方法
Apr 20 PHP
yii2实现根据时间搜索的方法
May 25 PHP
thinkPHP简单实现多个子查询语句的方法
Dec 05 PHP
PHP实现链表的定义与反转功能示例
Jun 09 PHP
PHP获取访问设备信息的方法示例
Feb 20 PHP
thinkphp框架表单数组实现图片批量上传功能示例
Apr 04 PHP
Thinkphp集成抖音SDK的实现方法
Apr 28 PHP
Laravel6.18.19如何优雅的切换发件账户
Jun 14 PHP
php png失真的原因及解决办法
Nov 17 PHP
PHP HTML JavaScript MySQL代码如何互相传值的方法分享
Sep 30 #PHP
ThinkPHP3.0略缩图不能保存到子目录的解决方法
Sep 30 #PHP
用PHP实现 上一篇、下一篇的代码
Sep 29 #PHP
php中长文章分页显示实现代码
Sep 29 #PHP
PHP实现下载功能的代码
Sep 29 #PHP
php流量统计功能的实现代码
Sep 29 #PHP
Zend的AutoLoad机制介绍
Sep 27 #PHP
You might like
PHP远程连接MYSQL数据库非常慢的解决方法
2008/07/05 PHP
PHP 代码规范小结
2012/03/08 PHP
php 过滤英文标点符号及过滤中文标点符号代码
2014/06/12 PHP
PHP检测用户是否关闭浏览器的方法
2016/02/14 PHP
PHP获取路径和目录的方法总结【必看篇】
2017/03/04 PHP
如何修改yii2.0自带的user表为其它的表
2017/08/01 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
JS option location 页面跳转实现代码
2008/12/27 Javascript
ExtJS Window 最小化的一种方法
2009/11/18 Javascript
jBox 2.3基于jquery的最新多功能对话框插件 常见使用问题解答
2011/11/10 Javascript
jQuery在IE下使用未闭合的xml代码创建元素时的Bug介绍
2012/01/10 Javascript
jQuery使用CSS()方法给指定元素同时设置多个样式
2015/03/26 Javascript
js 博客内容进度插件详解
2017/02/19 Javascript
javascript 面向对象function详解及实例代码
2017/02/28 Javascript
彻底弄懂 JavaScript 执行机制
2018/10/23 Javascript
Vue 中如何正确引入第三方模块的方法步骤
2019/05/05 Javascript
前端Vue项目详解--初始化及导航栏
2019/06/24 Javascript
jquery制作的移动端购物车效果完整示例
2020/02/24 jQuery
[46:53]Secret vs Liquid 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python处理中文编码和判断编码示例
2014/02/26 Python
在Python中使用dict和set方法的教程
2015/04/27 Python
python使用matplotlib绘图时图例显示问题的解决
2017/04/27 Python
python数据结构之链表详解
2017/09/12 Python
Python优先队列实现方法示例
2017/09/21 Python
python使用Tkinter实现在线音乐播放器
2018/01/30 Python
python使用xlrd和xlwt读写Excel文件的实例代码
2018/09/05 Python
Python3 venv搭建轻量级虚拟环境的步骤(图文)
2019/08/09 Python
django数据模型(Model)的字段类型解析
2019/12/25 Python
浅析css3中matrix函数的使用
2016/06/06 HTML / CSS
英国计算机产品零售商:Novatech(定制个人电脑、笔记本电脑、工作站和服务器)
2018/01/28 全球购物
Linux面试经常问的文件系统操作命令
2016/10/04 面试题
销售提升方案
2014/06/07 职场文书
会计工作总结范文2014
2014/12/23 职场文书
红旗渠导游词
2015/02/09 职场文书
公文格式,规则明细(新手收藏)
2019/07/23 职场文书
JS前端宏任务微任务及Event Loop使用详解
2022/07/23 Javascript