使用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 相关文章推荐
一个没有MYSQL数据库支持的简易留言本的编写
Oct 09 PHP
PHP has encountered an Access Violation
Jan 15 PHP
PHP 批量更新网页内容实现代码
Jan 05 PHP
flash用php连接数据库的代码
Apr 21 PHP
PHP合并两个数组的两种方式的异同
Sep 14 PHP
PHP 读取Postgresql中的数组
Apr 14 PHP
PHP中如何实现常用邮箱的基本判断
Jan 07 PHP
WordPress过滤垃圾评论的几种主要方法小结
Jul 11 PHP
CI框架实现优化文件上传及多文件上传的方法
Jan 04 PHP
PHP实现验证码校验功能
Nov 16 PHP
关于laravel-admin ueditor 集成并解决刷新的问题
Oct 21 PHP
php 中self,this的区别和操作方法实例分析
Nov 04 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的header和asp中的redirect比较
2006/10/09 PHP
jQuery获取Select选择的Text和Value(详细汇总)
2013/01/25 Javascript
jquery插件validate验证的小例子
2013/05/08 Javascript
JS简单操作select和dropdownlist实例
2014/11/26 Javascript
javascript实现根据iphone屏幕方向调用不同样式表的方法
2015/07/13 Javascript
详解参数传递四种形式
2015/07/21 Javascript
vue2的todolist入门小项目的详细解析
2017/05/11 Javascript
详解React Native顶|底部导航使用小技巧
2017/09/14 Javascript
基于Angularjs-router动态改变Title值的问题
2018/08/30 Javascript
jquery图片预览插件实现方法详解
2019/07/18 jQuery
小程序如何在不同设备上自适应生成海报的实现方法
2019/08/20 Javascript
在Vue中使用mockjs代码实例
2020/11/25 Vue.js
JavaScript this关键字的深入详解
2021/01/14 Javascript
[00:47]TI7不朽珍藏III——沙王不朽展示
2017/07/15 DOTA
[01:00:30]TFT vs VGJ.T Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
全面解读Python Web开发框架Django
2014/06/30 Python
Python win32com 操作Exce的l简单方法(必看)
2017/05/25 Python
python+matplotlib绘制旋转椭圆实例代码
2018/01/12 Python
Python读取Word(.docx)正文信息的方法
2018/03/15 Python
对numpy中shape的深入理解
2018/06/15 Python
Python 、Pycharm、Anaconda三者的区别与联系、安装过程及注意事项
2019/10/11 Python
python中np是做什么的
2020/07/21 Python
基于python实现坦克大战游戏
2020/10/27 Python
python tqdm实现进度条的示例代码
2020/11/10 Python
Python实现小黑屋游戏的完整实例
2021/01/06 Python
英国门销售网站:Green Tree Doors
2020/01/07 全球购物
人力资源行政经理自我评价
2013/10/23 职场文书
40岁生日感言
2014/02/15 职场文书
《海底世界》教学反思
2014/04/16 职场文书
研发工程师岗位职责
2014/04/28 职场文书
国贸专业毕业求职信
2014/06/11 职场文书
2014年小学生教师节演讲稿范文
2014/09/10 职场文书
纪念九一八事变演讲稿1000字
2014/09/14 职场文书
zabbix监控mysql的实例方法
2021/06/02 MySQL
前端vue+express实现文件的上传下载示例
2022/02/18 Vue.js
gtx1650怎么样 gtx1650显卡相当于什么级别
2022/04/08 数码科技