使用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 stream_context_create()作用和用法分析
Mar 29 PHP
PHP开发工具ZendStudio下Xdebug工具使用说明详解
Nov 11 PHP
ThinkPHP的截取字符串函数无法显示省略号的解决方法
Jun 25 PHP
PHP获取短链接跳转后的真实地址和响应头信息的方法
Jul 25 PHP
php定时执行任务设置详解
Feb 06 PHP
php使用正则表达式进行字符串搜索的方法
Mar 23 PHP
php使用高斯算法实现图片的模糊处理功能示例
Nov 11 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
Sep 21 PHP
PHP实现的字符串匹配算法示例【sunday算法】
Dec 19 PHP
thinkphp整合系列之极验滑动验证码geetest功能
Jun 18 PHP
Yii框架操作cookie与session的方法实例详解
Sep 04 PHP
Thinkphp5.0 框架实现控制器向视图view赋值及视图view取值操作示例
Oct 12 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
fleaphp下不确定的多条件查询的巧妙解决方法
2008/09/11 PHP
php csv操作类代码
2009/12/14 PHP
php设计模式 DAO(数据访问对象模式)
2011/06/26 PHP
php获取数组中重复数据的两种方法
2013/06/28 PHP
php网页病毒清除类
2014/12/08 PHP
php中JSON的使用方法
2015/04/30 PHP
php cli配置文件问题分析
2015/10/15 PHP
javascript+xml实现简单图片轮换(只支持IE)
2012/12/23 Javascript
浅谈javascript中for in 和 for each in的区别
2015/04/23 Javascript
jQuery+PHP星级评分实现方法
2015/10/02 Javascript
Nodejs全局安装和本地安装的不同之处
2016/07/04 NodeJs
Angular和百度地图的结合实例代码
2016/10/19 Javascript
前端实现文件的断点续传(前端文件提交+后端PHP文件接收)
2016/11/04 Javascript
angular实现商品筛选功能
2017/02/01 Javascript
jQuery实现移动端Tab选项卡效果
2017/03/15 Javascript
详解Vue-基本标签和自定义控件
2017/03/24 Javascript
mui back 返回刷新页面的实例
2017/12/06 Javascript
详解vue-cli 本地开发mock数据使用方法
2018/05/29 Javascript
玩转vue的slot内容分发
2018/09/22 Javascript
微信小程序新手教程之页面打开数量限制
2019/03/03 Javascript
中高级前端必须了解的JS中的内存管理(推荐)
2019/07/04 Javascript
js实现二级联动简单实例
2020/01/11 Javascript
Python使用Supervisor来管理进程的方法
2015/05/28 Python
Python 由字符串函数名得到对应的函数(实例讲解)
2017/08/10 Python
Python第三方Window模块文件的几种安装方法
2018/11/22 Python
python实现函数极小值
2019/07/10 Python
在交互式环境中执行Python程序过程详解
2019/07/12 Python
Python实现仿射密码的思路详解
2020/04/23 Python
车间副主任岗位职责
2013/12/24 职场文书
雷人标语集锦
2014/06/19 职场文书
语文教育专业求职信
2014/06/28 职场文书
艺术节开幕词
2015/01/28 职场文书
培训简讯范文
2015/07/20 职场文书
快速学习Oracle触发器和游标
2021/06/30 Oracle
Python 类,对象,数据分类,函数参数传递详解
2021/09/25 Python
十大最强火系宝可梦,喷火龙上榜,第一名有双火属性
2022/03/18 日漫