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日

相关文章

  • 移动端翻页插件dropload.js(支持Zepto和jQuery)

    下面是“移动端翻页插件dropload.js”的完整攻略。 什么是dropload.js dropload.js 是一款能帮助我们实现移动端下拉刷新和上滑加载更多的 jQuery/Zepto 插件。它的核心功能就是在页面滚动到底部后自动加载下一页内容,这对于移动端网站来说非常实用。 如何使用dropload.js 首先,你需要引入 dropload.js 文…

    jquery 2023年5月28日
    00
  • ztree获取选中节点时不能进入可视区域出现BUG如何解决

    要解决该问题,我们需要了解ztree如何设置选中节点和如何使该节点在可视区域内。 设置选中节点 使用ztree获取选中节点,我们可以通过getSelectedNodes()方法来获取选中的节点数组。该方法可以直接返回节点对象数组。如果只需要获取单个选中的节点,可以使用方法getSelectedNodes()[0]。当我们获取到选中的节点后,就可以对其进行一系…

    jquery 2023年5月18日
    00
  • jQuery验证元素是否为空的两种常用方法

    下面是我为你准备的详细讲解: 前言 在表单提交之前,我们通常需要验证所有的表单项是否填写,如果有任何一个表单元素未填写,就不能提交表单。而使用jQuery验证是否为空是非常方便的方法。 方法1:使用val()函数判断 在jQuery中,我们可以使用val()函数获取输入框的值,然后判断其是否为空。示例如下: // 获取id为input1的输入框的值 var …

    jquery 2023年5月28日
    00
  • jquery购物车结算功能实现方法

    下面我将为你详细讲解jquery购物车结算功能实现方法的完整攻略。 1. 确定购物车商品数据结构 在实现购物车结算功能前,需要确定一个合适的购物车数据结构。常见的购物车数据结构有数组和对象两种。在本攻略中,我们使用对象来表示购物车中的商品。 var items = [ { name: ‘商品1’, price: 100, count: 2 }, { name…

    jquery 2023年5月27日
    00
  • JQuery日历插件My97DatePicker日期范围限制

    下面是关于JQuery日历插件My97DatePicker日期范围限制的完整攻略。 1. My97DatePicker简介 My97DatePicker是一款基于jQuery的日期选择器,它有着良好的UI设计和兼容性,能够很好地满足日常开发中的日期选择需求。 2.日期范围限制 在My97DatePicker中,可以通过设置日期范围来限制用户选择的日期,从而避…

    jquery 2023年5月28日
    00
  • 如何使用jQuery Mobile创建一个没有输入区的全宽滑块

    要使用 jQuery Mobile 创建一个没有输入区的全宽滑块,可以采用以下步骤: 创建 HTML 结构 首先,我们需要在 HTML 中创建一个 div 元素作为容器,然后在其中添加一个 input 元素,使用type=”range”来创建滑块,此处不要将它放在 form 中,否则会显示输入区。代码如下: <div id="slider-c…

    jquery 2023年5月12日
    00
  • 浅谈Asp.net Mvc之Action如何传多个参数的方法

    那么首先需要了解的是,ASP.NET MVC中的Action可以通过多种方式来传递参数,下面我会结合示例来详细讲解。 方法一:Query String传参法 Query String是通过将参数添加到URL字符串后面传递,并在服务器端获取。这种方式适用于少量的参数或者请求缓存已经开启的情况下。 示例1 例如:请求URL地址是/Home/Index?id=1&…

    jquery 2023年5月18日
    00
  • jQuery返回定位插件详解

    jQuery返回定位插件详解 本文将介绍一个非常常用的jQuery插件:返回顶部插件。该插件可以方便地使网页滚动到页面顶部,提高用户体验。我们将介绍如何使用该插件以及它的实现原理。 插件实现原理 该插件的实现原理非常简单,其基本思路是监听网页的滚动事件,当滚动条位置超出一定范围时,显示“返回顶部”按钮。然后当用户点击该按钮时,使用动画效果使网页滚动到顶部位置…

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