使用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+XML 制作简单的留言本 图文教程
Nov 02 PHP
php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
May 09 PHP
php中用加号与用array_merge合并数组的区别深入分析
Jun 03 PHP
微信扫描二维码登录网站代码示例
Dec 30 PHP
PHP中使用php://input处理相同name值的表单数据
Feb 03 PHP
PHP模板引擎Smarty内建函数foreach,foreachelse用法分析
Apr 11 PHP
PHP实现的进度条效果详解
May 03 PHP
PHP实现将多个文件中的内容合并为新文件的方法示例
Jun 10 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
Aug 30 PHP
浅谈Laravel POST,PUT,PATCH 路由的区别
Oct 15 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
Feb 18 PHP
TP5框架实现一次选择多张图片并预览的方法示例
Apr 04 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面向对象法则
2012/02/23 PHP
php类声明和php类使用方法示例分享
2014/03/29 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
PHP数据分析引擎计算余弦相似度算法示例
2017/08/08 PHP
tp5.0框架隐藏index.php入口文件及模块和控制器的方法分析
2020/02/11 PHP
Jquery选择器 $实现原理
2009/12/02 Javascript
关于图片的预加载过程中隐藏未知的
2012/12/19 Javascript
7款吸引人眼球的jQuery/CSS3特效实例分享
2013/04/25 Javascript
JS实现图片无间断滚动代码汇总
2014/07/30 Javascript
js判断是否按下了Shift键的方法
2015/01/27 Javascript
jQuery+json实现的简易Ajax调用实例
2015/12/14 Javascript
JS传递对象数组为参数给后端,后端获取的实例代码
2016/06/28 Javascript
基于Node.js模板引擎教程-jade速学与实战1
2017/09/17 Javascript
vue实现某元素吸顶或固定位置显示(监听滚动事件)
2017/12/13 Javascript
vue-cli项目代理proxyTable配置exclude的方法
2018/09/20 Javascript
实用Javascript调试技巧分享(小结)
2019/06/18 Javascript
JS实现移动端双指缩放和旋转方法
2019/12/13 Javascript
[07:48]DOTA2上海特级锦标赛主赛事首日RECAP
2016/03/04 DOTA
Python工程师面试题 与Python Web相关
2016/01/14 Python
Python用list或dict字段模式读取文件的方法
2017/01/10 Python
Python实现读取文件最后n行的方法
2017/02/23 Python
python django事务transaction源码分析详解
2017/03/17 Python
Python遍历pandas数据方法总结
2018/02/09 Python
python多进程读图提取特征存npy
2019/05/21 Python
django基础学习之send_mail功能
2019/08/07 Python
Python 使用 PyMysql、DBUtils 创建连接池提升性能
2019/08/14 Python
Python 的 f-string 可以连接字符串与数字的原因解析
2021/02/20 Python
英国儿童图书网站:Scholastic
2017/03/26 全球购物
Sunglasses Shop丹麦:欧洲第一的太阳镜在线销售网站
2017/10/22 全球购物
奥兰多迪士尼门票折扣:Undercover Tourist
2018/07/09 全球购物
Notino希腊:购买香水和美容产品
2019/07/25 全球购物
Java的for语句中break, continue和return的区别
2013/12/19 面试题
幼师专业求职推荐信
2013/11/08 职场文书
厕所文明标语
2014/06/11 职场文书
法学专业毕业生自荐信
2014/06/11 职场文书
vue实现在data里引入相对路径
2022/06/05 Vue.js