提示:
直接看代码吧(为防止冲突函数名前加了“upall_”使用时可以替换掉,^_^)。
效果:
主题下的function.php:
<?php // upall:判断来自哪个搜索引擎
function upall_get_delim($ref) {
$search_engines = array (
'google.com' => 'q',
'google.com.hk' => 'q',
'baidu.com' => 'wd',
'search.yahoo.com' => 'p',
'cn.search.yahoo.com' => 'p',
'cn.bing.com' => 'q',
'search.lycos.com' => 'query',
'youdao.com' => 'q',
'search.aol.com' => 'query',
'ask.com' => 'q',
'hotbot.com' => 'query',
'overture.com' => 'Keywords',
'search.netscape.com' => 'query',
'search.looksmart.com' => 'qt',
'search.earthlink.net' => 'q',
'search.viewpoint.com' => 'k',
'mamma.com' => 'query'
);
$delim = FALSE;
if (isset($search_engines[$ref])) {
$delim = $search_engines[$ref];
}
return $delim;
}
function upall_get_terms($d) {
$terms = null;
$query_array = array();
$query_terms = null;
$query = explode($d.'=', $_SERVER['HTTP_REFERER']);
$query = explode('&', $query[1]);
$query = urldecode($query[0]);
$query = str_replace("'", '', $query);
$query = str_replace('"', '', $query);
$query_array = preg_split('/[\s,\+\.]+/',$query);
$query_terms = implode(' ', $query_array);
$terms = htmlspecialchars(urldecode($query_terms));
if (!seems_utf8($terms)){
$terms=iconv("GBK", "UTF-8", $terms);
}
return $terms;
}
function upall_get_refer() {
if (!isset($_SERVER['HTTP_REFERER']) || ($_SERVER['HTTP_REFERER'] == '')) return FALSE;
$referer_info = parse_url($_SERVER['HTTP_REFERER']);
$referer = $referer_info['host'];
if (substr($referer, 0, 4) == 'www.')
$referer = substr($referer, 4);
return $referer;
}
function upall_getinfo($what) {
$referer = upall_get_refer();
if (!$referer) return FALSE;
$delimiter = upall_get_delim($referer);
if ($delimiter) {
$terms = upall_get_terms($delimiter);
if ($what == 'isref') {
return ($terms != ''?true:false);
}
if ($what == 'referrer') {
$parsed = parse_url($_SERVER['HTTP_REFERER']);
//echo '<a href="http://'.$parsed['host'].'">'.$parsed['host'].'</a>';
echo $parsed['host'];
}
if ($what == 'terms') {
echo $terms;
}
}
}
function upall_terms_filter($content){
$referer = upall_get_refer();
$output = '';
$delimiter = upall_get_delim($referer);
if($delimiter) {
$terms = upall_get_terms($delimiter);
$terms= array_unique(preg_split("/[\s,]+/", $terms));
$contentarr = preg_split("/(<.*>)/U", $content, -1, PREG_SPLIT_DELIM_CAPTURE);
$stop = count($contentarr);
for ($i = 0; $i < $stop; $i++) {
$content = $contentarr[$i];
if ((strlen($content) > 0) && ('<' != $content{0})) {
foreach ($terms as $term) {
if (strlen($term)>1)
$content=eregi_replace("($term)","<b style='background-color:#ffff00;'>\\1</b>", $content);
}
}
$output .= $content;
}
return $output;
} else{
return $content;
}
}
function upall_get_se_keywords(){
$referer = upall_get_refer();
$delimiter = upall_get_delim($referer);
$terms = upall_get_terms($delimiter);
$terms= array_unique(preg_split("/[\s,]+/", $terms));
$keywords = '';
foreach ($terms as $term) {
$keywords .= $term . ' ';
}
echo $keywords;
}
add_filter('the_content', 'upall_terms_filter');
add_filter('comment_text', 'upall_terms_filter');
function upall_set_header() {
if (upall_getinfo('isref')) header('Vary: Referer', FALSE);
}
add_action('init', 'upall_set_header');
// upall:end:判断来自哪个搜索引擎
?>
主题下的footer.php:
<?php if (upall_getinfo('isref')) : ?>
<div id='seTip'> 提示:您通过 <?php upall_getinfo('referrer'); ?> 搜索的关健字
<strong><?php upall_get_se_keywords();?></strong>
已在文章正文中高亮显示。
<span class="closebox"><a onclick="javascript:document.getElementById('seTip').style.display='none';" title="关闭">×</a></span>
</div>
<?php endif; ?>
主题下的style.css:
#seTip {
background:#000000;
border:1px solid #B3B3B3;
color:#FFFFFF;
font-size:14px;
opacity:0.7;
filter:alpha(opacity=70);
padding:10px;
position:fixed;
width:280px;
margin-left:-140px;
left:50%;
top:5px;
border-radius:8px;
box-shadow: 2px 2px 5px #333333;
}
#seTip a {
cursor:pointer;
float:right;
margin:5px;
display:block;
height:15px;
width:15px;
text-align:center;
line-height:15px;
overflow:hidden;
}
#seTip strong{
background-color:#ffff00;
color:#000;
}
<完。摘自:Lift Studio>
