首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 解析 HTTP Referer 獲取搜尋引擎關鍵字完整指南

     編輯:PHP 相關知識

前言

在網站流量分析與 SEO 優化中,了解訪客透過何種關鍵字從搜尋引擎進入網站至關重要。本文介紹一個實用的 PHP 類別,能自動偵測來路網址並解析出百度、Google、搜搜、搜狗等主流搜尋引擎的搜尋關鍵字。

核心實作邏輯

Keyword 類別採用策略模式,根據 HTTP_REFERER 的網域自動選擇對應的解析方法:

  • 百度:參數 wd=
  • Google:參數 q=
  • 搜搜:參數 w=
  • 搜狗:參數 query=

完整程式碼

<?php
class Keyword {
    public function getKeyword($referer) {
        if (strpos($referer, "https://www.baidu.com") !== false) {
            return $this->getBaiduKeyword($referer);
        } elseif (strpos($referer, "https://www.google.com") !== false) {
            return $this->getGoogleKeyword($referer);
        } elseif (strpos($referer, "https://www.soso.com") !== false) {
            return $this->getSosoKeyword($referer);
        } elseif (strpos($referer, "https://www.sogou.com") !== false) {
            return $this->getSogouKeyword($referer);
        }
        return '';
    }

    private function getBaiduKeyword($str) {
        return $this->extractParam($str, 'wd=');
    }

    private function getGoogleKeyword($str) {
        return $this->extractParam($str, '&q=');
    }

    private function getSosoKeyword($str) {
        $kw = $this->extractParam($str, '?w=');
        return $kw ?: $this->extractParam($str, '&w=');
    }

    private function getSogouKeyword($str) {
        return $this->extractParam($str, 'query=');
    }

    private function extractParam($url, $param) {
        $pos = strpos($url, $param);
        if ($pos === false) return '';
        $str = substr($url, $pos + strlen($param));
        $end = strpos($str, '&');
        if ($end !== false) $str = substr($str, 0, $end);
        return rawurldecode($str);
    }
}
?>

使用範例

$referer = $_SERVER['HTTP_REFERER'] ?? '';
$keyword = new Keyword();
$searchTerm = $keyword->getKeyword($referer);
if ($searchTerm) {
    echo "訪客搜尋關鍵字:" . htmlspecialchars($searchTerm);
}

注意事項

  1. 現代搜尋引擎多採用 HTTPS,Referer 可能為空或被截斷
  2. 建議搭配 Google Search Console、百度統計等官方工具獲取更完整數據
  3. 程式碼已重構為通用 extractParam 方法,減少重複邏輯
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved