PHP自定义函数获取搜索引擎来源关键字的方法

获取搜索引擎来源关键字是网站SEO的重要组成部分,本文将详细讲解PHP自定义函数获取搜索引擎来源关键字的方法。

目录

准备工作

在实现该功能之前,需要对HTTP Referer信息和search引擎返回的keyword或query进行解析。

HTTP Referer是指请求来源的URL,可以通过$_SERVER超全局变量获取。搜索引擎一般会在URL中包含关键字或查询字符串,因此我们需要将referer中的关键字提取出来。

主要过程

  1. 获取Referer信息

php
$referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';

  1. 解析Referer

php
$referer = parse_url($referer);

  1. 获取特定搜索引擎的关键字

针对不同的搜索引擎,有不同的关键字获取方式。下面是两个示例:

  • 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技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • 如何在jQuery中设置点击按钮的提示信息

    使用jQuery可以轻松地设置点击按钮的提示信息。以下是详细的攻略,包含两个示例,演示如何在jQuery中设置点击按钮的提示信息: 步骤1:引入jQuery库 在使用之前,需要先HTML文引jQuery库。可以通过以下方式引入: <script src="https://code.jquery.com/jquery-3.6.0.js&quot…

    jquery 2023年5月9日
    00
  • jQuery基于ajax方式实现用户名存在性检查功能示例

    下面是实现“jQuery基于ajax方式实现用户名存在性检查功能示例”的完整攻略。 一、前置知识 在开始实现之前,我们需要掌握一些前置知识。 首先需要了解什么是AJAX。AJAX(Asynchronous Javascript And XML,异步JavaScript和XML)是一种在无需重新加载整个页面的情况下,能够更新部分网页的技术。通过AJAX,可以在…

    jquery 2023年5月28日
    00
  • jQWidgets jqxGrid getselectedrowindex()方法

    以下是关于“jQWidgets jqxGrid getselectedrowindex()方法”的完整攻略,包含两个示例说明: 方法简介 jqxGrid 控件的 getselectedrowindex() 方法用于获取当前选中行的索引。该方法的语法如下: $("#jqxGrid").jqxGrid(‘getselectedrowindex…

    jquery 2023年5月10日
    00
  • jQuery自定义多选下拉框效果

    来讲解一下“jQuery自定义多选下拉框效果”的攻略。 1. 确定实现思路 首先,我们需要明确所需实现的效果。下拉框的基本原理是列表显示,我们需要将列表生成后通过CSS隐藏,在点击下拉按钮的时候再通过动态修改CSS的方式来影响下拉列表的显示和隐藏。而自定义多项选择则需要在下拉框的基础上做进一步拓展,在下拉框的列表项前面添加一个复选框,实现多项选择。 2. 代…

    jquery 2023年5月27日
    00
  • JS实现的DOM插入节点操作示例

    以下是JS实现的DOM插入节点操作示例的完整攻略: 内容介绍 在Web开发中,DOM插入节点是非常常见的操作之一。插入节点可以帮助我们动态地修改页面的内容和结构,让页面变得更加生动和丰富。 本文将通过两个示例来讲解如何使用JS实现DOM插入节点操作,涵盖了常见的几种插入方式。希望本文能够帮助大家更好地理解DOM的插入操作,同时提高编写Web页面的能力。 示例…

    jquery 2023年5月27日
    00
  • jQuery UI tabs active选项

    以下是关于 jQuery UI tabs active 选项的详细攻略: jQuery UI tabs active 选项 active 选项允许您设置当前选项卡的引。您使用此选项来在页面加载时设置默认选项卡,或在用户与选项卡交互时动态更改选项卡。 语法 $(selector).tabs({ active: index }); 参数 index:要设置为当前…

    jquery 2023年5月11日
    00
  • DataTables ColumnDefs选项

    以下是关于DataTables ColumnDefs选项的完整攻略: ColumnDefs选项是什么? ColumnDefs选项是DataTables中的一个选项,用于定义表格列的属性。使用ColumnDefs选项,可以定义每列的属性,例如列宽度、排序选项、搜索选项等。 如何使用ColumnDefs选项? 可以使用以下代码来设置ColumnDefs选项: $…

    jquery 2023年5月11日
    00
  • JS简单实现点击跳转登陆邮箱功能的方法

    下面是JS简单实现点击跳转登陆邮箱功能的方法的完整攻略: 步骤一:添加按钮 首先在HTML页面上添加一个按钮,代码如下: <button id="loginBtn">Login to Email</button> 步骤二:添加事件监听器 为刚才添加的按钮添加一个click事件监听器并指定它的处理函数,代码如下: d…

    jquery 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部