当前位置:首页 > PHP教程 > php高级应用 > 列表

PHP记录用户通过搜索引擎进网站的关键词并给出相关结果

发布:smiling 来源: PHP粉丝网  添加日期:2014-07-23 09:07:29 浏览: 评论:0 

本文章给大家介绍PHP记录用户通过搜索引擎进网站的关键词并给出相关结果,有需要了解的同学可进入参考,下面是进入你网站的情况的相关实现代码,更多的,大家自己拓展,代码如下:

  1. $rfr = $_SERVER['HTTP_REFERER']; 
  2. //if(!$rfr) $rfr='http://'.$_SERVER['HTTP_HOST']; 
  3.  
  4. if($rfr) 
  5. { 
  6.  $p=parse_url($rfr); 
  7.  parse_str($p['query'],$pa); 
  8.  $p['host']=strtolower($p['host']); 
  9.  $arr_sd_key=array( 
  10.      'baidu.com'=>'word', 
  11.      'google.com'=>'q', 
  12.      'sina.com.cn'=>'word', 
  13.      'sohu.com'=>'word', 
  14.      'msn.com'=>'q', 
  15.      'bing.com'=>'q', 
  16.      '163.com'=>'q', 
  17.      'yahoo.com'=>'p' 
  18.      ); 
  19.  $keyword=''; 
  20.  $sengine=$p['host']; 
  21.  foreach($arr_sd_key as $se=>$kwd) 
  22.  { 
  23.   if(strpos($p['host'],$se)!==false) 
  24.   { 
  25.    $keyword=$pa[$kwd]; 
  26.    $sengine=$se; 
  27.    break; 
  28.   } 
  29.  } 
  30.  $sql="insert into visit_log(domain,key_word,ct)"; 
  31. } 

上面的代码实现不了根据用户来的词给出相关结果,下面我来再进行调上面的函数,代码如下:

  1. <?php 
  2. function unescape($str) { 
  3.  $ret = ''; 
  4.  $len = strlen($str); 
  5.  for ($i = 0; $i < $len; $i++) { 
  6.   if ($str[$i] == '%' && $str[$i +1] == 'u') { 
  7.    $val = hexdec(substr($str, $i +2, 4)); 
  8.    if ($val < 0x7f) 
  9.     $ret .= chr($val); 
  10.    else 
  11.     if ($val < 0x800) 
  12.      $ret .= chr(0xc0 | ($val >> 6)) . chr(0x80 | ($val & 0x3f)); 
  13.     else 
  14.      $ret .= chr(0xe0 | ($val >> 12)) . chr(0x80 | (($val >> 6) & 0x3f)) . chr(0x80 | ($val & 0x3f)); 
  15.  
  16.    $i += 5; 
  17.   } else 
  18.    if ($str[$i] == '%') { 
  19.     $ret .= urldecode(substr($str, $i, 3)); 
  20.     $i += 2; 
  21.    } else 
  22.     $ret .= $str[$i]; 
  23.  } 
  24.  return $ret; 
  25. } 
  26. function ls_get_delim($ref) { 
  27.  $search_engines = array ( 
  28.   'google.com.hk' => 'q', 
  29.   'google.com.tw' => 'q', 
  30.   'go.google.com' => 'q', 
  31.   'google.com' => 'q', 
  32.   'blogsearch.google.com' => 'q', 
  33.   'cn.bing.com' => 'q', 
  34.   'one.cn.yahoo.com' => 'p', 
  35.   'baidu.com' => 'wd', 
  36.   'soso.com' => 'w', 
  37.   'youdao.com' => 'q', 
  38.   'sogou.com' => 'query' 
  39.  ); 
  40.  $delim = false; 
  41.  // 判断 
  42.  if (isset ($search_engines[$ref])) { 
  43.   $delim = $search_engines[$ref]; 
  44.  } 
  45.  return $delim; 
  46. } 
  47.  
  48. function ls_get_refer() { 
  49.  // 判断前一页面的 URL 地址 
  50.  $queryString = $_GET['referer']; 
  51.  $queryString = unescape($queryString); 
  52.  if (!isset ($queryString) || ($queryString == '')) 
  53.   return false; 
  54.  $referer_info = parse_url($queryString); 
  55.  $referer = $referer_info['host']; 
  56.  //去除www. 
  57.  if (substr($referer, 0, 4) == 'www.') 
  58.   $referer = substr($referer, 4); 
  59.  return $referer; 
  60. } 
  61.  
  62. function ls_getinfo($what) { 
  63.  $referer = ls_get_refer(); 
  64.  if (!$referer) 
  65.   return false; 
  66.  $delimiter = ls_get_delim($referer); 
  67.  if ($delimiter) { 
  68.   $terms = ls_get_terms($delimiter); 
  69.   if ($what == 'isref' && $terms != '') { 
  70.    return true; 
  71.   } 
  72.   if ($what == 'terms') { 
  73.    echo $terms; 
  74.   } 
  75.  } 
  76.  return false; 
  77. } 
  78.  
  79. function yxiao_seems_utf8($str) { 
  80.  $length = strlen($str); 
  81.  for ($i = 0; $i < $length; $i++) { 
  82.   $c = ord($str[$i]); 
  83.   if ($c < 0x80) 
  84.    $n = 0; # 0bbbbbbb 
  85.   elseif (($c & 0xE0) == 0xC0) $n = 1; # 110bbbbb 
  86.   elseif (($c & 0xF0) == 0xE0) $n = 2; # 1110bbbb 
  87.   elseif (($c & 0xF8) == 0xF0) $n = 3; # 11110bbb 
  88.   elseif (($c & 0xFC) == 0xF8) $n = 4; # 111110bb 
  89.   elseif (($c & 0xFE) == 0xFC) $n = 5; # 1111110b 
  90.   else 
  91.    return false; # Does not match any model 
  92.   for ($j = 0; $j < $n; $j++) { # n bytes matching 10bbbbbb follow ? 
  93.    if ((++ $i == $length) || ((ord($str[$i]) & 0xC0) != 0x80)) 
  94.     return false; 
  95.   } 
  96.  } 
  97.  return true; 
  98. } 
  99.  
  100. function ls_get_terms($d) { 
  101.  //取得查询值 
  102.  $queryString = $_GET['referer']; 
  103.  $queryString = unescape($queryString); 
  104.  $query_str = parse_url($queryString); 
  105.  parse_str($query_str[query], $query_str); 
  106.  $query = $query_str[$d]; 
  107.  $query = urldecode($query); 
  108.  
  109.  $query = str_replace("'", '', $query); 
  110.  $query = str_replace('"', '', $query); 
  111.  $query_array = preg_split('/[s,+.]+/', $query); 
  112.  $query_terms = implode(' ', $query_array); 
  113.  $terms = htmlspecialchars($query_terms); 
  114.  //gbk->utf8 
  115.  if (!yxiao_seems_utf8($terms)) { 
  116.   $terms = iconv("GBK", "UTF-8//IGNORE", $terms); 
  117.  } 
  118.  
  119.  return $terms; 
  120. } 
  121. if (ls_getinfo('isref')) { 
  122. ?> 
  123. document.write('<div id="serp"><p>') 
  124. document.write('更多搜索结果:<em><a href="/search?q=<?php ls_getinfo(terms); ?>" ') 
  125. document.write('title="查看<?php ls_getinfo(terms); ?>的搜索结果" rel="nofollow"><?php ls_getinfo(terms); ?></a></em>') 
  126. document.write('</p></div>'); 
  127. <?php } ?> 

Tags: PHP关键词 搜索引擎 相关结果

分享到:

相关文章