使用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
Linux下ZendOptimizer的安装与配置方法
Apr 12 PHP
paypal即时到账php实现代码
Nov 28 PHP
thinkphp获取栏目和文章当前位置的方法
Oct 29 PHP
php和editplus正则表达式去除空白行
Apr 17 PHP
Joomla语言翻译类Jtext用法分析
May 05 PHP
thinkPHP实现多字段模糊匹配查询的方法
Dec 01 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
Mar 16 PHP
Yii框架参数化查询中IN查询只能查询一个的解决方法
May 20 PHP
php上传后台无法收到数据解决方法
Oct 28 PHP
Laravel Eloquent分表方法并使用模型关联的实现
Nov 25 PHP
PHP使用Http Post请求发送Json对象数据代码解析
Jul 16 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
把77A收信机改造成收音机
2021/03/02 无线电
PHP中的cookie
2006/11/26 PHP
php使用百度ping服务代码实例
2014/06/19 PHP
详解Laravel服务容器的绑定与解析
2019/11/05 PHP
setInterval 和 setTimeout会产生内存溢出
2008/02/15 Javascript
$.ajax json数据传递方法
2008/11/19 Javascript
jquery 最简单易用的表单验证插件
2010/02/27 Javascript
JavaScript 原型继承
2011/12/26 Javascript
flash遮住div问题的正确解决方法
2014/02/27 Javascript
深入分析JSON编码格式提交表单数据
2015/06/25 Javascript
JavaScript中利用jQuery绑定事件的几种方式小结
2016/03/06 Javascript
javascript原生ajax写法分享
2016/04/10 Javascript
JS修改地址栏参数实例代码
2016/06/14 Javascript
JS实现的手机端精简幻灯片效果
2016/09/05 Javascript
AngularJS入门教程之Helloworld示例
2016/12/25 Javascript
JavaScript获取select中text值的方法
2017/02/13 Javascript
easy ui datagrid 从编辑框中获取值的方法
2017/02/22 Javascript
js获取元素下的第一级子元素的方法(推荐)
2017/03/05 Javascript
在Vue中使用highCharts绘制3d饼图的方法
2018/02/08 Javascript
javascript Canvas动态粒子连线
2020/01/01 Javascript
matplotlib在python上绘制3D散点图实例详解
2017/12/09 Python
python提取具有某种特定字符串的行数据方法
2018/12/11 Python
利用python脚本如何简化jar操作命令
2019/02/24 Python
python读取raw binary图片并提取统计信息的实例
2020/01/09 Python
python爬虫可以爬什么
2020/06/16 Python
python 使用三引号时容易犯的小错误
2020/10/21 Python
利用python如何实现猫捉老鼠小游戏
2020/12/04 Python
HTML页面中添加Canvas标签示例
2015/01/01 HTML / CSS
Farfetch阿联酋:奢侈品牌时尚购物平台
2019/07/26 全球购物
怎样声明接口
2014/09/19 面试题
信息技术教学反思
2014/02/12 职场文书
品牌推广策划方案
2014/05/28 职场文书
对照四风自我剖析材料
2014/10/07 职场文书
担保贷款承诺书
2015/04/30 职场文书
李清照的诗词赏析(20首)
2019/08/22 职场文书
sqlserver2017共享功能目录路径不可改的解决方法
2021/04/16 SQL Server