使用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学习 变量使用总结
Mar 24 PHP
调整优化您的LAMP应用程序的5种简单方法
Jun 26 PHP
php无限极分类递归排序实现方法
Nov 11 PHP
PHP生成RSS文件类实例
Dec 05 PHP
PHP文件读取功能的应用实例
May 08 PHP
深入理解PHP变量的值类型和引用类型
Oct 21 PHP
PHP中each与list用法分析
Jan 08 PHP
简单解析PHP程序的运行流程
Jun 23 PHP
php解决DOM乱码的方法示例代码
Nov 20 PHP
php 广告点击统计代码(php+mysql)
Feb 21 PHP
一文掌握PHP Xdebug 本地与远程调试(小结)
Apr 23 PHP
laravel 查询数据库获取结果实现判断是否为空
Oct 24 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
DC动漫人物排行
2020/03/03 欧美动漫
BBS(php &amp; mysql)完整版(四)
2006/10/09 PHP
PHP通过header实现文本文件下载的代码
2010/08/08 PHP
php获取错误信息的方法
2015/07/17 PHP
解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法
2015/10/23 PHP
jQuery中extend函数详解
2015/02/13 Javascript
简述AngularJS的控制器的使用
2015/06/16 Javascript
PHP结合jQuery实现的评论顶、踩功能
2015/07/22 Javascript
jQuery满屏焦点图左右滚动特效代码分享
2015/09/07 Javascript
JS实现新浪微博效果带遮罩层的弹出框代码
2015/10/12 Javascript
JQuery实现简单的服务器轮询效果实例
2016/03/31 Javascript
JS简单随机数生成方法
2016/09/05 Javascript
微信小程序之自定义组件的实现代码(附源码)
2018/08/02 Javascript
Vue中util的工具函数实例详解
2019/07/08 Javascript
js+HTML5 canvas 实现简单的加载条(进度条)功能示例
2019/07/16 Javascript
jquery添加div实现消息聊天框
2020/02/08 jQuery
JS实现电脑虚拟键盘打字测试
2020/06/24 Javascript
[02:40]DOTA2殁境神蚀者 英雄基础教程
2013/11/26 DOTA
[03:38]TI4西雅图DOTA2前线报道 71专访
2014/07/08 DOTA
[01:37]全新的一集《真视界》——TI7总决赛
2017/09/21 DOTA
Python Socket编程详细介绍
2017/03/23 Python
Python中int()函数的用法浅析
2017/10/17 Python
Python/ArcPy遍历指定目录中的MDB文件方法
2018/10/27 Python
python实现猜数字游戏
2020/03/25 Python
python 函数中的参数类型
2020/02/11 Python
Michael Kors加拿大官网:购买设计师手袋、手表、鞋子、服装等
2019/03/16 全球购物
美国名表在线商城:Ashford(支持中文)
2019/09/24 全球购物
意大利在线高尔夫商店:Online Golf
2021/03/09 全球购物
介绍一下linux文件系统分配策略
2012/11/17 面试题
污水厂厂长岗位职责
2014/01/04 职场文书
农村结婚典礼司仪主持词
2014/03/14 职场文书
工厂门卫岗位职责
2015/04/13 职场文书
员工安全责任协议书
2016/03/22 职场文书
解决SpringCloud Feign传对象参数调用失败的问题
2021/06/23 Java/Android
baselines示例程序train_cartpole.py的ImportError
2022/05/20 Python
如何解决flex文本溢出问题小结
2022/07/15 HTML / CSS