代码如下:
<?php
//*
* 获取来自搜索引擎入站关键词
* edit by www.
*/
function get_keyword($url,$kw_start)//函数作用:从url中提取关键词。参数说明:url及关键词前的字符。
{
$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=
$search_2="baidu.com"; //wd=
$google=preg_match("/\b{$search_1}\b/",$url);//记录匹配情况,用于入站判断。
$baidu=preg_match("/\b{$search_2}\b/",$url);
$s_s_keyword="";
if ($google)
{//来自google
$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
}
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
}
echo '$s_s_keyword';
?>
代码说明:
1,注意字符编码的问题,因为不同的搜索引擎可能返回的编码格式不同。
2,功能更全的函数,可以参考这篇:获取搜索引擎关键词来源。
代码:
<?php
/**
* 记录搜索引擎来路及关键词
* edit by www.
*/
//搜索引擎来路
function keywords($url){
$spier=array('baidu.'=>'百度','google.'=>'谷歌','soso.'=>'搜搜','sogou.'=>'搜狗','www.so.com'=>'360');
$q=array('百度'=>'/wd=([^&]*)/i','谷歌'=>'/q=([^&]*)/i','360'=>'/q=(.*)/i','搜狗'=>'/query=([^&]*)/i','搜搜'=>'/w=([^&]*)/i');
foreach($spier as $k=>$v){
if(strpos($url,$k)){
preg_match("{$q[$v]}",$url,$b);
if($v=='搜搜'||$v=='搜狗'){
$keywords=iconv('GBK','UTF-8',urldecode($b[1]));
}else{
$keywords=urldecode($b[1]);
}
echo "来自{$v}的关键字:".$keywords;
}
}
}
$url=$_SERVER['HTTP_REFERER']; //这个放到网站的头部来获取来访的地址的
keywords($url);
//记录用户搜索引擎关键词代码
//记录用户通过常见的搜索引擎搜索关键词
$rfr = $_SERVER['HTTP_REFERER'];
//if(!$rfr) $rfr='http://'.$_SERVER['HTTP_HOST'];
if($rfr)
{
$p=parse_url(/blog_article/$rfr/index.html);
parse_str($p['query'],$pa);
$p['host']=strtolower($p['host']);
$arr_sd_key=array(
'baidu.com'=>'word',
'google.com'=>'q',
'sina.com.cn'=>'word',
'sohu.com'=>'word',
'msn.com'=>'q',
'bing.com'=>'q',
'163.com'=>'q',
'yahoo.com'=>'p'
);
$keyword='';
$sengine=$p['host'];
foreach($arr_sd_key as $se=>$kwd)
{
if(strpos($p['host'],$se)!==false)
{
$keyword=$pa[$kwd];
$sengine=$se;
break;
}
}
$sql="insert into visit_log(domain,key_word,ct)";
}
?>1,获取当前网址的代码
<?php
/**
* 得到当前网址
* eidt by www.
*/
function get_url() {
$sys_protocal = isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443' ? 'https://' : 'http://';
$php_self = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
$path_info = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '';
$relate_url = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : $php_self.(isset($_SERVER['QUERY_STRING']) ? '?'.$_SERVER['QUERY_STRING'] : $path_info);
return $sys_protocal.(isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '').$relate_url;
}
//输出当前网址
$url = get_url();
echo $url;
?>
2,获取页面内容的代码
<?php
/**
* 得到页面内容
* edit by www.
*/
function get_contents($url){
if(function_exists('file_get_contents')){
$file_contents = file_get_contents($url);
}else{
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
}
//输出内容
return $file_contents;
?>