使用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 5昨天隆重推出--PHP 5/Zend Engine 2.0新特性
Oct 09 PHP
用DBSQL类加快开发MySQL数据库程序的速度
Oct 09 PHP
php magic_quotes_gpc的一点认识与分析
Aug 18 PHP
PHP数据集构建JSON格式及新数组的方法
Nov 07 PHP
学习php分页代码实例
Oct 24 PHP
自己写的php curl库实现整站克隆功能
Feb 12 PHP
浅谈php的优缺点
Jul 14 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
Jan 15 PHP
Win7环境下Apache连接MySQL提示连接已重置的解决办法
May 09 PHP
创建无限极分类树型结构的简单方法
Jun 20 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
Nov 14 PHP
Laravel等框架模型关联的可用性浅析
Dec 15 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生成数组的使用示例 php全组合算法
2014/01/16 PHP
php中$美元符号与Zen Coding冲突问题解决方法分享
2014/05/28 PHP
PHP常见的6个错误提示及解决方法
2016/07/07 PHP
Zend Framework入门教程之Zend_Session会话操作详解
2016/12/08 PHP
Nigma vs Liquid BO3 第一场2.14
2021/03/10 DOTA
js实现双向链表互联网机顶盒实战应用实现
2011/10/28 Javascript
jQuery实现流动虚线框的方法
2015/01/29 Javascript
js弹出窗口返回值的简单实例
2016/05/28 Javascript
jQuery实现滚动条滚动到子元素位置(方便定位)
2017/01/08 Javascript
基于Vue实现支持按周切换的日历
2020/09/24 Javascript
Vue-router路由判断页面未登录跳转到登录页面的实例
2017/10/26 Javascript
vue移动端城市三级联动组件使用详解
2019/07/26 Javascript
解决layer.msg 不居中 ifram中的问题
2019/09/05 Javascript
js判断鼠标移入移出方向的方法
2020/06/24 Javascript
[16:43]Heroes19_剃刀(完美)
2014/10/31 DOTA
从Python的源码来解析Python下的freeblock
2015/05/11 Python
python抓取百度首页的方法
2015/05/19 Python
Python实现的连接mssql数据库操作示例
2018/08/17 Python
解决pip install xxx报错SyntaxError: invalid syntax的问题
2018/11/30 Python
解决python3中cv2读取中文路径的问题
2018/12/05 Python
Django使用redis缓存服务器的实现代码示例
2019/04/28 Python
Python生命游戏实现原理及过程解析(附源代码)
2019/08/01 Python
Pycharm安装并配置jupyter notebook的实现
2020/05/18 Python
为2021年的第一场雪锦上添花:用matplotlib绘制雪花和雪景
2021/01/05 Python
HTML5 创建canvas元素示例代码
2014/06/04 HTML / CSS
Web时代变迁及html5与html4的区别
2016/01/06 HTML / CSS
竞聘上岗演讲稿范文
2014/01/10 职场文书
青年志愿者事迹材料
2014/02/07 职场文书
全国优秀辅导员事迹材料
2014/05/14 职场文书
商场租赁意向书
2014/07/30 职场文书
党员干部群众路线个人整改措施
2014/09/18 职场文书
法院干警四风问题个人对照检查材料思想汇报
2014/10/07 职场文书
2015年档案管理员工作总结
2015/05/13 职场文书
高三毕业感言
2015/07/30 职场文书
《悬崖边的树》读后感2篇
2019/12/02 职场文书
Vue鼠标滚轮滚动切换路由效果的实现方法
2021/08/04 Vue.js