PHP获取搜索引擎关键字来源的函数(支持百度和谷歌等搜索引擎)
author:一佰互联 2019-04-30   click:390
最近遇到一个项目,客户需要一个功能,一个商品销售下单需要知道用户下单是从哪个途径来的,认为客服软件(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("/{$search_1}/",$url);//记录匹配情况,用于入站判断。
$baidu=preg_match("/{$search_2}/",$url);
$yahoo=preg_match("/{$search_3}/",$url);
$sogou=preg_match("/{$search_4}/",$url);
$soso=preg_match("/{$search_5}/",$url);
$bing=preg_match("/{$search_6}/",$url);
$youdao=preg_match("/{$search_7}/",$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=//www.yinxi.net";
echo save_www_iiwnet_com_keyword("http://www.baidu.com/s?wd=//www.yinxi.net","http://www.baidu.com/s?wd=//www.yinxi.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;
}