使用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验证码类代码分享(已封装成类)
Jul 17 PHP
php 解压rar文件及zip文件的方法
May 05 PHP
smarty中js的调用方法示例
Oct 27 PHP
推荐一本PHP程序猿都应该拜读的书
Dec 31 PHP
PHP简单生成缩略图相册的方法
Jul 29 PHP
[原创]PHP简单开启curl的方法(测试可行)
Jan 11 PHP
PHP中函数gzuncompress无法使用的解决方法
Mar 02 PHP
php使用imagecopymerge()函数创建半透明水印
Jan 25 PHP
php插入mysql数据返回id的方法
May 31 PHP
PHP实现非阻塞模式的方法分析
Jul 26 PHP
PDO::errorCode讲解
Jan 28 PHP
PHP 构造函数和析构函数原理与用法分析
Apr 21 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 sprintf()函数让你的sql操作更安全
2008/07/23 PHP
PHP中的socket_read和socket_recv区别详解
2015/02/09 PHP
PHP手机短信验证码实现流程详解
2018/05/17 PHP
asp函数split()对应php函数explode()
2019/02/27 PHP
如何重写Laravel异常处理类详解
2020/12/20 PHP
window.showModalDialog使用手册
2007/01/11 Javascript
JQuery 简便实现页面元素数据验证功能
2007/03/24 Javascript
javascript 动态设置已知select的option的value值的代码
2009/12/16 Javascript
jquery 关键字“拖曳搜索”之“拖曳”以及 图片“提示自适应放大”效果 的实现
2010/04/18 Javascript
javascript面向对象编程代码
2011/12/19 Javascript
Node.js编码规范
2014/07/14 Javascript
jquery中filter方法用法实例分析
2015/02/06 Javascript
d3.js入门教程之数据绑定详解
2017/04/28 Javascript
nodejs实现爬取网站图片功能
2017/12/14 NodeJs
Angular实现的简单查询天气预报功能示例
2017/12/27 Javascript
react-native 圆弧拖动进度条实现的示例代码
2018/04/12 Javascript
动态加载JavaScript文件的3种方式
2018/05/05 Javascript
微信小程序实现自定义加载图标功能
2018/07/19 Javascript
Vue2.0生命周期的理解
2018/08/20 Javascript
解决在vue项目中webpack打包后字体不生效的问题
2018/09/01 Javascript
JavaScript数组方法的错误使用例子
2018/09/13 Javascript
vue项目中监听手机物理返回键的实现
2020/01/18 Javascript
vue项目实现设置根据路由高亮对应的菜单项操作
2020/08/06 Javascript
javascript中layim之查找好友查找群组
2021/02/06 Javascript
利用Python中的输入和输出功能进行读取和写入的教程
2015/04/14 Python
Odoo中如何生成唯一不重复的序列号详解
2018/02/10 Python
python 检查文件mime类型的方法
2018/12/08 Python
python读取几个G的csv文件方法
2019/01/07 Python
CSS3弹性盒模型flex box快速入门心得(必看篇)
2016/05/24 HTML / CSS
体育活动总结范文
2014/05/04 职场文书
超市开业庆典策划方案
2014/05/14 职场文书
党支部群众路线整改措施思想汇报
2014/10/10 职场文书
创业计划书之外语培训班
2019/11/02 职场文书
阿里云Nginx配置https实现域名访问项目(图文教程)
2021/03/31 Servers
MySQL kill不掉线程的原因
2021/05/07 MySQL
Mysql中 unique列插入重复值该怎么解决呢
2021/05/26 MySQL