使用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中的加密功能
Oct 09 PHP
Get或Post提交值的非法数据处理
Oct 09 PHP
聊天室php&amp;mysql(四)
Oct 09 PHP
mysql5详细安装教程
Jan 15 PHP
PHP 替换模板变量实现步骤
Aug 24 PHP
PHP+MySQL 制作简单的留言本
Nov 02 PHP
PHP 魔术函数使用说明
May 14 PHP
php empty() 检查一个变量是否为空
Nov 10 PHP
php通过数组实现多条件查询实现方法(字符串分割)
May 06 PHP
PHP大神的十大优良习惯
Sep 14 PHP
Linux平台php命令行程序处理管道数据的方法
Nov 10 PHP
php 浮点数比较方法详解
May 05 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/12/13 PHP
php 计算两个时间戳相隔的时间的函数(小时)
2009/12/18 PHP
php park、unpark、ord 函数使用方法(二进制流接口应用实例)
2010/10/19 PHP
PHP保留两位小数并且四舍五入及不四舍五入的方法
2013/09/22 PHP
codeigniter中实现一次性加载多个view的方法
2015/03/20 PHP
Yii2主题(Theme)用法详解
2016/07/23 PHP
php无限级评论嵌套实现代码
2018/04/18 PHP
JS面向对象编程 for Cookie
2010/09/19 Javascript
js replace替换所有匹配的字符串
2014/02/13 Javascript
node.js中的fs.realpathSync方法使用说明
2014/12/16 Javascript
NodeJS学习笔记之MongoDB模块
2015/01/13 NodeJs
js光标定位文本框回车表单提交问题的解决方法
2015/05/11 Javascript
js获取页面description的方法
2015/05/21 Javascript
Angular+Bootstrap+Spring Boot实现分页功能实例代码
2017/07/21 Javascript
vue源码入口文件分析(推荐)
2018/01/30 Javascript
Javascript数组方法reduce的妙用之处分享
2019/06/10 Javascript
深入学习js函数的隐式参数 arguments 和 this
2019/06/24 Javascript
微信小程序利用云函数获取手机号码
2019/12/17 Javascript
创建nuxt.js项目流程图解
2020/03/13 Javascript
解决elementUI 切换tab后 el_table 固定列下方多了一条线问题
2020/07/19 Javascript
python实现排序算法
2014/02/14 Python
Python对两个有序列表进行合并和排序的例子
2014/06/13 Python
linux安装Python3.4.2的操作方法
2018/09/28 Python
对Python的zip函数妙用,旋转矩阵详解
2018/12/13 Python
理想高通滤波实现Python opencv示例
2019/01/30 Python
详解使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)
2020/04/01 Python
详解如何在css中引入自定义字体(font-face)
2018/05/17 HTML / CSS
FC-Moto瑞典:欧洲最大的摩托车服装和头盔商店之一
2018/11/27 全球购物
Android面试宝典
2013/08/06 面试题
工作失职检讨书范文
2014/01/16 职场文书
软件项目开发计划书
2014/05/01 职场文书
优质服务活动实施方案
2014/05/02 职场文书
党员群众路线整改措施及今后努力方向
2014/10/28 职场文书
2014教师年度工作总结
2014/11/10 职场文书
Html5生成验证码的示例代码
2021/05/10 Javascript
div与span之间的区别与使用介绍
2021/12/06 HTML / CSS