怎么在PHP中获取搜索引擎的来源?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

获取搜索引擎来源关键字的函数:
function getKeywords() {
// 搜索引擎关键字映射
static $host_keyword_map = array(
'www.baidu.com' => 'wd',
'v.baidu.com' => 'word',
'image.baidu.com' => 'word',
'news.baidu.com' => 'word',
'www.so.com' => 'q',
'video.so.com' => 'q',
'image.so.com' => 'q',
'news.so.com' => 'q',
'www.sogou.com' => 'query',
'pic.sogou.com' => 'query',
'v.sogou.com' => 'query',
);
// 检查来源是否搜索引擎
if (!isset($_SERVER['HTTP_REFERER'])) {
return '';
}
$urls = parse_url($_SERVER['HTTP_REFERER']);
if (!array_key_exists($urls['host'], $host_keyword_map)) {
return '';
}
$key = $host_keyword_map[$urls['host']];
// 检查关键字参数是否存在
if (!isset($urls['query'])) {
return '';
}
$params = array();
parse_str($urls['query'], $params);
if (!isset($params[$key])) {
return '';
}
$keywords = $params[$key];
// 检查编码
$encoding = mb_detect_encoding($keywords, 'utf-8,gbk');
if ($encoding != 'utf-8') {
$keywords = iconv($encoding, 'utf-8', $keywords);
}
return $keywords;
}函数测试:
<?php
header("Content-Type: text/html; charset=utf-8");
$referers = array(
'/tupian/20230522/
'/tupian/20230522/tn=92506501_hao_pg
'http://www.baidu.com/link?url=ctBhF7AAau6LwE61pJOEH-ZhgUM7D3YHYMrm6xIXJlDQtMXCiea7gg49s90Q-Qh8wHD8Ano-dPNhUawBBNEEwEbtu8toMF5k1V7Xy850EtlpZyMcS0e_y-SCJp86iM6e&wd=%E5%BD%92%E6%9D%A5&tn=baidu&ie=utf-8&inputT=2980',
'http://www.baidu.com/link?url=TIn9NR6fwiy6IwwkCcVF8HhHoxVUpHQsyj1YdlQPy2roXKTnSQS_3UxwvyjZ2JPkpxF8-diSoRCSpODUM_jq2K&wd=%E5%BD%92%E6%9D%A5&tn=baidu&ie=utf-8&input',
'/tupian/20230522/tn=news
'/tupian/20230522/404.html
'/tupian/20230522/
'/tupian/20230522/src=none&ls=
'/tupian/20230522/s
'/tupian/20230522/v
'/tupian/20230522/ns
'/tupian/20230522/web
'/tupian/20230522/web
'/tupian/20230522/d
'/tupian/20230522/v
'/tupian/20230522/tuxing.html
'http://www.baidu.com/',
'/tupian/20230522/&
);
foreach ($referers as $r) {
$_SERVER['HTTP_REFERER'] = $r;
echo getKeywords(), "\n";
}关于怎么在PHP中获取搜索引擎的来源问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。