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

整合 Discuz! 線上中文分詞 API 實現 PHP 關鍵字提取

     編輯:PHP 綜合知識

前言

自建分詞服務維護成本高,Discuz! 提供免費的線上中文分詞 API,僅需發送 HTTP 請求即可取得關鍵字。本文封裝一個 dz_segment() 函數,輸入標題與內容,回傳關鍵字陣列,開箱即用。

核心函數代碼

/**
 * Discuz! 在線中文分詞
 * @param string $title 標題(必填)
 * @param string $content 內容(選填,限長)
 * @param string $encode 編碼,預設 utf-8
 * @return array|false 關鍵字陣列或 false
 */
function dz_segment($title = '', $content = '', $encode = 'utf-8') {
    if ($title == '') return false;

    $title   = rawurlencode(strip_tags($title));
    $content = strip_tags($content);
    if (strlen($content) > 2400) {
        $content = mb_substr($content, 0, 800, $encode);
    }
    $content = rawurlencode($content);

    $url = "https://keyword.discuz.com/related_kw.html?title={$title}&content={$content}&ics={$encode}&ocs={$encode}";
    $xml_array = simplexml_load_file($url);
    $result = $xml_array->keyword->result;

    $data = [];
    foreach ($result->item as $key => $value) {
        $data[] = (string)$value->kw;
    }
    return $data ? $data : false;
}

API 請求與回應範例

請求 URL

https://keyword.discuz.com/related_kw.html?title=高三歷史全程復習精品教程&content=&ics=utf-8&ocs=utf-8

回應 XML

<?xml version="1.0" encoding="utf-8"?>
<total_response>
  <svalid>36000</svalid>
  <keyword>
    <info>
      <count>1</count>
      <errno>0</errno>
      <nextuptime>1291287160</nextuptime>
      <keep>0</keep>
    </info>
    <result>
      <item>
        <kw><![CDATA[高三歷史]]></kw>
      </item>
    </result>
  </keyword>
</total_response>

使用注意事項

  • 依賴 simplexml_load_file,需開啟 allow_url_fopen 或改用 cURL。
  • API 有長度與頻率限制,大量請求建議自建分詞服務(如 SCWS、jieba-php)。
  • 回傳編碼由 ocs 參數控制,建議統一使用 UTF-8。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved