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 相关文章推荐
一次编写,随处运行
Oct 09 PHP
PHP4实际应用经验篇(8)
Oct 09 PHP
php侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
Oct 15 PHP
php echo()和print()、require()和include()函数区别说明
Mar 27 PHP
几款免费开源的不用数据库的php的cms
Dec 19 PHP
php 解压rar文件及zip文件的方法
May 05 PHP
php发送get、post请求的6种方法简明总结
Jul 08 PHP
微信公众平台开发之配置与请求
Aug 26 PHP
CI框架实现框架前后端分离的方法详解
Dec 30 PHP
php中的抽象方法和抽象类
Feb 14 PHP
PHP实现正则匹配所有括号中的内容
Jun 22 PHP
laravel 自定义常量的两种方案
Oct 14 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
PHP4实际应用经验篇(3)
2006/10/09 PHP
PHP 多维数组排序实现代码
2009/08/05 PHP
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
2012/12/10 PHP
教你如何解密 “ PHP 神盾解密工具 ”
2014/06/20 PHP
jquery 将disabled的元素置为enabled的三种方法
2009/07/25 Javascript
在Javascript里访问SharePoint列表数据的实现方法
2011/05/22 Javascript
Javascript合并表格中具有相同内容单元格示例
2013/08/11 Javascript
JQuery选择器绑定事件及修改内容的方法
2015/01/23 Javascript
在JavaScript中用getMinutes()方法返回指定的分时刻
2015/06/10 Javascript
jQuery实现点击小图片淡入淡出显示大图片特效
2015/09/09 Javascript
JQuery fileupload插件实现文件上传功能
2016/03/18 Javascript
关于动态生成dom绑定事件失效的原因及解决方法
2016/08/06 Javascript
BootStrap 模态框实现刷新网页并关闭功能
2017/01/04 Javascript
JS 实现计算器详解及实例代码(一)
2017/01/08 Javascript
jQuery上传多张图片带进度条样式(DEMO)
2017/03/02 Javascript
ztree实现权限横向显示功能
2017/05/20 Javascript
详解在Vue中如何使用axios跨域访问数据
2017/07/07 Javascript
从vue源码看props的用法
2019/01/09 Javascript
JS实现求5的阶乘示例
2019/01/21 Javascript
基于vue写一个全局Message组件的实现
2019/08/15 Javascript
Vue前端项目部署IIS的实现
2020/01/06 Javascript
javascript设计模式 ? 命令模式原理与用法实例分析
2020/04/20 Javascript
jQuery插件simplePagination的使用方法示例
2020/04/28 jQuery
Python 写入训练日志文件并控制台输出解析
2019/08/13 Python
Python生成验证码、计算具体日期是一年中的第几天实例代码详解
2019/10/16 Python
Python3开发环境搭建详细教程
2020/06/18 Python
python 图像插值 最近邻、双线性、双三次实例
2020/07/05 Python
利用python对mysql表做全局模糊搜索并分页实例
2020/07/12 Python
python给视频添加背景音乐并改变音量的具体方法
2020/07/19 Python
AmazeUI折叠式卡片布局,整合内容列表、表格组件实现
2020/08/20 HTML / CSS
十岁生日同学答谢词
2014/01/19 职场文书
教师现实表现材料
2014/02/14 职场文书
2014迎新年晚会策划方案
2014/02/23 职场文书
小学班干部竞选演讲稿
2014/04/24 职场文书
财务工作检讨书
2014/10/29 职场文书
公司禁烟通知
2015/04/23 职场文书