获取搜索引擎来源关键字是网站SEO的重要组成部分,本文将详细讲解PHP自定义函数获取搜索引擎来源关键字的方法。
目录
准备工作
在实现该功能之前,需要对HTTP Referer信息和search引擎返回的keyword或query进行解析。
HTTP Referer是指请求来源的URL,可以通过$_SERVER超全局变量获取。搜索引擎一般会在URL中包含关键字或查询字符串,因此我们需要将referer中的关键字提取出来。
主要过程
- 获取Referer信息
php
$referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
- 解析Referer
php
$referer = parse_url($referer);
- 获取特定搜索引擎的关键字
针对不同的搜索引擎,有不同的关键字获取方式。下面是两个示例:
-
Google搜索引擎
php
if (strpos($referer['host'], 'www.google') !== false && strpos($referer['query'], 'q=') !== false) {
parse_str($referer['query'], $params);
return urldecode($params['q']);
} -
百度搜索引擎
php
if (strpos($referer['host'], 'www.baidu') !== false && strpos($referer['query'], 'wd=') !== false) {
parse_str($referer['query'], $params);
return urldecode($params['wd']);
} -
获取其他搜索引擎的关键字
如果要获取其他搜索引擎的关键字,可以通过以下方式实现:
-
获取所有查询参数
php
parse_str($referer['query'], $params); -
针对某些搜索引擎,关键字可能存在于$referer['path']中,可以通过正则表达式匹配获取
php
if (strpos($referer['host'], 'www.sogou') !== false) {
preg_match('/(?:sogou\.com\/web\?|www\.sogou\.com\/v\d\/portal\/web\.html\?)(.+)&/', $referer['path'], $matches);
if (!empty($matches[1])) {
parse_str($matches[1], $params);
return urldecode($params['query']);
}
} -
自定义函数实现
基于以上过程,我们可以自定义一个函数来获取搜索引擎关键字:
php
function get_search_keyword() {
$referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
$referer = parse_url($referer);
$params = array();
if (strpos($referer['host'], 'www.google') !== false && strpos($referer['query'], 'q=') !== false) {
parse_str($referer['query'], $params);
return urldecode($params['q']);
} elseif (strpos($referer['host'], 'www.baidu') !== false && strpos($referer['query'], 'wd=') !== false) {
parse_str($referer['query'], $params);
return urldecode($params['wd']);
} elseif (strpos($referer['host'], 'www.sogou') !== false) {
preg_match('/(?:sogou\.com\/web\?|www\.sogou\.com\/v\d\/portal\/web\.html\?)(.+)&/', $referer['path'], $matches);
if (!empty($matches[1])) {
parse_str($matches[1], $params);
return urldecode($params['query']);
}
} else {
parse_str($referer['query'], $params);
if (!empty($params['q'])) {
return urldecode($params['q']);
} elseif (!empty($params['query'])) {
return urldecode($params['query']);
} else {
return '';
}
}
}
实现代码示例
下面是一个简单的示例,演示如何使用上述自定义函数:
<?php
//自定义函数实现
function get_search_keyword() {
$referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
$referer = parse_url($referer);
$params = array();
if (strpos($referer['host'], 'www.google') !== false && strpos($referer['query'], 'q=') !== false) {
parse_str($referer['query'], $params);
return urldecode($params['q']);
} elseif (strpos($referer['host'], 'www.baidu') !== false && strpos($referer['query'], 'wd=') !== false) {
parse_str($referer['query'], $params);
return urldecode($params['wd']);
} elseif (strpos($referer['host'], 'www.sogou') !== false) {
preg_match('/(?:sogou\.com\/web\?|www\.sogou\.com\/v\d\/portal\/web\.html\?)(.+)&/', $referer['path'], $matches);
if (!empty($matches[1])) {
parse_str($matches[1], $params);
return urldecode($params['query']);
}
} else {
parse_str($referer['query'], $params);
if (!empty($params['q'])) {
return urldecode($params['q']);
} elseif (!empty($params['query'])) {
return urldecode($params['query']);
} else {
return '';
}
}
}
//获取搜索引擎关键字
$keyword = get_search_keyword();
if (!empty($keyword)) {
echo '您从搜索引擎访问本站,关键字为:'.$keyword;
} else {
echo '您不是从搜索引擎访问本站';
}
?>
总结
通过以上过程和代码示例,我们可以实现PHP自定义函数获取搜索引擎来源关键字的方法。在实际应用中,可以根据不同的需求修改自定义函数,实现更多的功能。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP自定义函数获取搜索引擎来源关键字的方法 - Python技术站