使用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 相关文章推荐
PHP 采集心得技巧
May 15 PHP
PHP中的MYSQL常用函数(php下操作数据库必备)
Sep 12 PHP
PHP5权威编程阅读学习笔记 附电子书下载
Jul 05 PHP
基于python发送邮件的乱码问题的解决办法
Apr 25 PHP
解析php入库和出库
Jun 25 PHP
php 注册时输入信息验证器的实现详解
Jul 05 PHP
PHP中余数、取余的妙用
Jun 29 PHP
PHP实现动态执行代码的方法
Mar 25 PHP
php图片上传类 附调用方法
May 15 PHP
老生常谈ThinkPHP中的行为扩展和插件(推荐)
May 05 PHP
php+mysql开发的最简单在线题库(在线做题系统)完整案例
Mar 30 PHP
PHP反射基础知识回顾
Sep 10 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
PHP脚本数据库功能详解(下)
2006/10/09 PHP
Yii控制器中操作视图js的方法
2016/07/04 PHP
PHP如何读取由JavaScript设置的Cookie
2017/03/22 PHP
JavaScript入门学习书籍推荐
2008/06/12 Javascript
javascript学习笔记(十六) 系统对话框(alert、confirm、prompt)
2012/06/20 Javascript
浏览器加载、渲染和解析过程黑箱简析
2012/11/29 Javascript
Jquery事件的连接使用示例
2013/06/18 Javascript
使用jQuery和Bootstrap实现多层、自适应模态窗口
2014/12/22 Javascript
javascript实现控制浏览器全屏
2015/03/30 Javascript
js跨域资源共享 基础篇
2016/07/02 Javascript
JS提示:Uncaught SyntaxError:Unexpected token ) 错误的解决方法
2016/08/19 Javascript
jquery对Json的各种遍历方法总结(必看篇)
2016/09/29 Javascript
js实现PC端根据IP定位当前城市地理位置
2017/02/22 Javascript
JavaScript之DOM插入更新删除_动力节点Java学院整理
2017/07/03 Javascript
微信小程序自定义tabBar组件开发详解
2020/09/24 Javascript
详解jQuery-each()方法
2019/03/13 jQuery
解析vue、angular深度作用选择器
2019/09/11 Javascript
Vue项目中如何使用Axios封装http请求详解
2019/10/23 Javascript
nodejs如何在package.json中设置多条启动命令
2020/03/16 NodeJs
javascript设计模式 ? 享元模式原理与用法实例分析
2020/04/15 Javascript
JavaScript编写开发动态时钟
2020/07/29 Javascript
Linux下Python获取IP地址的代码
2014/11/30 Python
Python利用Nagios增加微信报警通知的功能
2016/02/18 Python
彻底搞懂Python字符编码
2018/01/23 Python
对numpy中二进制格式的数据存储与读取方法详解
2018/11/01 Python
PyQt5实现五子棋游戏(人机对弈)
2020/03/24 Python
Django用户认证系统 组与权限解析
2019/08/02 Python
pygame实现五子棋游戏
2019/10/29 Python
python函数中将变量名转换成字符串实例
2020/05/11 Python
Python 实现二叉查找树的示例代码
2020/12/21 Python
美国在线奢侈品寄售商店:Luxury Garage Sale
2018/08/19 全球购物
高中自我评价分享
2013/12/05 职场文书
二人合伙经营协议书
2014/09/13 职场文书
单位提档介绍信
2015/10/22 职场文书
导游词之千岛湖
2019/09/23 职场文书
MySQL数据库完全卸载的方法
2022/03/03 MySQL