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 相关文章推荐
Windows下PHP5和Apache的安装与配置
Sep 05 PHP
多php服务器实现多session并发运行
Oct 09 PHP
一个基于PDO的数据库操作类(新) 一个PDO事务实例
Jul 03 PHP
PHP Warning: PHP Startup: Unable to load dynamic library \ D:/php5/ext/php_mysqli.dll\
Jun 17 PHP
php中debug_backtrace、debug_print_backtrace和匿名函数用法实例
Dec 01 PHP
PHP测试成功的邮件发送案例
Oct 26 PHP
PHP实现的网站目录扫描索引工具
Sep 08 PHP
PHP入门教程之上传文件实例详解
Sep 11 PHP
Yii2中hasOne、hasMany及多对多关联查询的用法详解
Feb 15 PHP
PHP编译configure时常见错误的总结
Aug 17 PHP
Yii框架日志记录Logging操作示例
Jul 12 PHP
PHP simplexml_load_string()函数实例讲解
Feb 03 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
10条PHP高级技巧[修正版]
2011/08/02 PHP
PHP安全防范技巧分享
2011/11/03 PHP
php四种基础算法代码实例
2013/10/29 PHP
PHP的引用详解
2015/02/22 PHP
PHP设计模式之装饰器模式实例详解
2018/02/07 PHP
PHP var关键字相关原理及使用实例解析
2020/07/11 PHP
jquery 图片预加载 自动等比例缩放插件
2008/12/25 Javascript
js 方法实现返回多个数据的代码
2009/04/30 Javascript
window.onload 加载完毕的问题及解决方案(下)
2009/07/09 Javascript
js escape,unescape解决中文乱码问题的方法
2010/05/26 Javascript
Node.js和MongoDB实现简单日志分析系统
2015/04/25 Javascript
微信小程序 详解下拉加载与上拉刷新实现方法
2017/01/13 Javascript
vue-cli3脚手架的配置及使用教程
2018/08/28 Javascript
详解SPA中前端路由基本原理与实现方式
2018/09/12 Javascript
AjaxFileUpload.js实现异步上传文件功能
2019/04/19 Javascript
JS判断数组里是否有重复元素的方法小结
2019/05/21 Javascript
layui使用数据表格实现购物车功能
2019/07/26 Javascript
ES6中定义类和对象的方法示例
2019/07/31 Javascript
Python使用Beautiful Soup包编写爬虫时的一些关键点
2016/01/20 Python
bpython 功能强大的Python shell
2016/02/16 Python
详解python的ORM中Pony用法
2018/02/09 Python
python中的split()函数和os.path.split()函数使用详解
2019/12/21 Python
pytorch中nn.Conv1d的用法详解
2019/12/31 Python
在Matplotlib图中插入LaTex公式实例
2020/04/17 Python
Python urllib request模块发送请求实现过程解析
2020/12/10 Python
车间班长岗位职责
2013/11/30 职场文书
三分钟英语演讲稿
2014/04/24 职场文书
学校感恩教育活动总结
2014/07/07 职场文书
个人查摆剖析材料
2014/10/16 职场文书
小学少先队辅导员述职报告
2015/01/10 职场文书
2015幼儿园新学期寄语
2015/02/27 职场文书
公司更名通知函
2015/04/24 职场文书
2015秋季开学典礼致辞
2015/07/16 职场文书
小学科学课教学反思
2016/02/23 职场文书
2019年最新版见习人员管理制度!
2019/07/08 职场文书
Navicat Premium自定义 sql 标签的创建方式
2022/09/23 数据库