使用php显示搜索引擎来的关键词


Posted in PHP onFebruary 13, 2014

以下是相关实现代码:

<?php
/*
Plugin Name: display-search-keywords
Plugin URI: http://www.imyxiao.com/1531.html
Description: 当访客通过搜索引擎来到你的博客,这个插件可以显示访客搜索的关键词
Version: 1.0
Author:<a href="http://www.imyxiao.com/">仰肖</a>
*/
function unescape($str) {
 $ret = '';
 $len = strlen($str);
 for ($i = 0; $i < $len; $i++) {
  if ($str[$i] == '%' && $str[$i +1] == 'u') {
   $val = hexdec(substr($str, $i +2, 4));
   if ($val < 0x7f)
    $ret .= chr($val);
   else
    if ($val < 0x800)
     $ret .= chr(0xc0 | ($val >> 6)) . chr(0x80 | ($val & 0x3f));
    else
     $ret .= chr(0xe0 | ($val >> 12)) . chr(0x80 | (($val >> 6) & 0x3f)) . chr(0x80 | ($val & 0x3f));
   $i += 5;
  } else
   if ($str[$i] == '%') {
    $ret .= urldecode(substr($str, $i, 3));
    $i += 2;
   } else
    $ret .= $str[$i];
 }
 return $ret;
}
function ls_get_delim($ref) {
 $search_engines = array (
  'google.com.hk' => 'q',
  'google.com.tw' => 'q',
  'go.google.com' => 'q',
  'google.com' => 'q',
  'blogsearch.google.com' => 'q',
  'cn.bing.com' => 'q',
  'one.cn.yahoo.com' => 'p',
  'baidu.com' => 'wd',
  'soso.com' => 'w',
  'youdao.com' => 'q',
  'sogou.com' => 'query'
 );
 $delim = false;
 // 判断
 if (isset ($search_engines[$ref])) {
  $delim = $search_engines[$ref];
 }
 return $delim;
}
function ls_get_refer() {
 // 判断前一页面的 URL 地址
 $queryString = $_GET['referer'];
 $queryString = unescape($queryString);
 if (!isset ($queryString) || ($queryString == ''))
  return false;
 $referer_info = parse_url($queryString);
 $referer = $referer_info['host'];
 //去除www.
 if (substr($referer, 0, 4) == 'www.')
  $referer = substr($referer, 4);
 return $referer;
}
function ls_getinfo($what) {
 $referer = ls_get_refer();
 if (!$referer)
  return false;
 $delimiter = ls_get_delim($referer);
 if ($delimiter) {
  $terms = ls_get_terms($delimiter);
  if ($what == 'isref' && $terms != '') {
   return true;
  }
  if ($what == 'terms') {
   echo $terms;
  }
 }
 return false;
}
function yxiao_seems_utf8($str) {
 $length = strlen($str);
 for ($i = 0; $i < $length; $i++) {
  $c = ord($str[$i]);
  if ($c < 0x80)
   $n = 0; # 0bbbbbbb
  elseif (($c & 0xE0) == 0xC0) $n = 1; # 110bbbbb
  elseif (($c & 0xF0) == 0xE0) $n = 2; # 1110bbbb
  elseif (($c & 0xF8) == 0xF0) $n = 3; # 11110bbb
  elseif (($c & 0xFC) == 0xF8) $n = 4; # 111110bb
  elseif (($c & 0xFE) == 0xFC) $n = 5; # 1111110b
  else
   return false; # Does not match any model
  for ($j = 0; $j < $n; $j++) { # n bytes matching 10bbbbbb follow ?
   if ((++ $i == $length) || ((ord($str[$i]) & 0xC0) != 0x80))
    return false;
  }
 }
 return true;
}
function ls_get_terms($d) {
 //取得查询值
 $queryString = $_GET['referer'];
 $queryString = unescape($queryString);
 $query_str = parse_url($queryString);
 parse_str($query_str[query], $query_str);
 $query = $query_str[$d];
 $query = urldecode($query);
 $query = str_replace("'", '', $query);
 $query = str_replace('"', '', $query);
 $query_array = preg_split('/[\s,\+\.]+/', $query);
 $query_terms = implode(' ', $query_array);
 $terms = htmlspecialchars($query_terms);
 //gbk->utf8
 if (!yxiao_seems_utf8($terms)) {
  $terms = iconv("GBK", "UTF-8//IGNORE", $terms);
 }
 return $terms;
}
if (ls_getinfo('isref')) {
?>
document.write('<div id="serp"><p>')
document.write('更多搜索结果:<em><a href="https://3water.com/search?q=<?php ls_getinfo(terms); ?>" ')
document.write('title="查看<?php ls_getinfo(terms); ?>的搜索结果" rel="nofollow"><?php ls_getinfo(terms); ?></a></em>')
document.write('</p></div>');
<?php } ?>
PHP 相关文章推荐
example1.php
Oct 09 PHP
一个典型的PHP分页实例代码分享
Jul 28 PHP
一个好用的PHP验证码类实例分享
Dec 27 PHP
php比较两个绝对时间的大小
Jan 31 PHP
php生成excel文件的简单方法
Feb 08 PHP
通过php删除xml文档内容的方法
Jan 23 PHP
php使用Jpgraph绘制复杂X-Y坐标图的方法
Jun 10 PHP
PHP实现C#山寨ArrayList的方法
Jul 16 PHP
PHP给文字内容中的关键字进行套红处理
Apr 12 PHP
php文件包含目录配置open_basedir的使用与性能详解
Apr 03 PHP
Laravel5中Cookie的使用详解
May 03 PHP
PHP7如何开启Opcode打造强悍性能详解
May 11 PHP
php根据日期判断星座的函数分享
Feb 13 #PHP
php的hash算法介绍
Feb 13 #PHP
php去除字符串换行符示例分享
Feb 13 #PHP
php中url函数介绍及使用示例
Feb 13 #PHP
php中的filesystem文件系统函数介绍及使用示例
Feb 13 #PHP
php实现cc攻击防御和防止快速刷新页面示例
Feb 13 #PHP
php中hashtable实现示例分享
Feb 13 #PHP
You might like
《超神学院》霸气归来, 天使彦上演维多利亚的秘密
2020/03/02 国漫
PHP 采集心得技巧
2009/05/15 PHP
js的压缩及jquery压缩探讨(提高页面加载性能/保护劳动成果)
2013/01/29 Javascript
jquery点击缩略图切换视频播放特效代码分享
2015/09/15 Javascript
JavaScript笔记之数据属性和存储器属性
2016/03/31 Javascript
D3.js实现饼状图的方法详解
2016/09/21 Javascript
JavaScript正则表达式实例详解
2016/10/16 Javascript
Vue+Vux项目实践完整代码
2017/11/30 Javascript
Vue.js 2.x之组件的定义和注册图文详解
2018/06/19 Javascript
ES6基础之默认参数值
2019/02/21 Javascript
node.js实现微信开发之获取用户授权
2019/03/18 Javascript
微信小程序—setTimeOut定时器的问题及解决
2019/07/26 Javascript
JS实现放烟花效果
2020/03/10 Javascript
[27:39]Ti4 循环赛第二日 LGD vs Fnatic
2014/07/11 DOTA
利用django如何解析用户上传的excel文件
2017/07/24 Python
深入学习Python中的上下文管理器与else块
2017/08/27 Python
python实现随机梯度下降(SGD)
2020/03/24 Python
Python模块WSGI使用详解
2018/02/02 Python
Python基础教程之异常详解
2019/01/10 Python
python线程池如何使用
2020/05/28 Python
python框架flask入门之环境搭建及开启调试
2020/06/07 Python
加拿大当代时尚服饰、配饰和鞋类专业零售商和制造商:LE CHÂTEAU
2017/10/06 全球购物
舞会礼服和舞会鞋:PromGirl
2019/04/22 全球购物
Auguste The Label官网:澳大利亚一家精品女装时尚品牌
2020/06/14 全球购物
个人自我评价和职业目标
2014/01/24 职场文书
反对形式主义、官僚主义、享乐主义和奢靡之风整改措施
2014/09/17 职场文书
北京离婚协议书范文2014
2014/09/29 职场文书
医院营销工作计划
2015/01/16 职场文书
城管个人总结
2015/02/28 职场文书
党校毕业个人总结
2015/02/28 职场文书
导游词之苏州盘门景区
2019/11/12 职场文书
浅谈Golang 嵌套 interface 的赋值问题
2021/04/29 Golang
Java面试题冲刺第十八天--Spring框架3
2021/08/07 面试题
详解Flutter网络请求Dio库的使用及封装
2022/04/14 Java/Android
关于vue-router-link选择样式设置
2022/04/30 Vue.js
MySQL主从切换的超详细步骤
2022/06/28 MySQL