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

PHP + XML 實作線上英漢字典查詢:DOMDocument 載入與遍歷比對

     編輯:PHP 相關知識

以 XML 檔案作為輕量級字典資料庫,結合 PHP DOMDocument 實作單字查詢功能。本文完整提供 XML 資料結構、查詢表單、後端處理邏輯 (遍歷比對)、結果輸出代碼,展示無資料庫環境下的資料查詢方案。

字典資料 XML (words.xml)

<?xml version="1.0" encoding="utf-8"?>
<words>
  <word>
    <en>boy</en>
    <ch>男孩</ch>
  </word>
  <word>
    <en>girl</en>
    <ch>女孩</ch>
  </word>
  <word>
    <en>teacher</en>
    <ch>老師</ch>
  </word>
  <word>
    <en>beauty</en>
    <ch>美女</ch>
  </word>
</words>

查詢前端表單 (word.php)

<h2>線上英漢字典</h2>
<form action="xmlprocess.php" method="post">
    請輸入英文單字:<input type="text" name="enword" />
    <input type="submit" value="查詢" name="sub">
</form>

後端處理邏輯 (xmlprocess.php)

<?php
// 1. 建立 DOMDocument 載入字典
$xmldoc = new DOMDocument();
$xmldoc->load("words.xml");

// 2. 處理查詢請求
if (!empty($_POST['sub'])) {
    $en_word = $_POST['enword'];
    
    // 取得所有英文單字節點
    $en_nodes = $xmldoc->getElementsByTagName("en");
    
    $cn_word = "找不到您輸入的單字";  // 預設值
    
    // 遍歷比對
    for ($i = 0; $i < $en_nodes->length; $i++) {
        if ($en_word == $en_nodes->item($i)->nodeValue) {
            // 找到對應索引,取得中文節點
            $cn_nodes = $xmldoc->getElementsByTagName("ch");
            $cn_word = $cn_nodes->item($i)->nodeValue;
            break;
        }
    }
    
    echo $cn_word;
}
?>

核心邏輯解析

  1. 同步索引對應:XML 結構保證 <en> 與 <ch> 在各自 DOMNodeList 中索引一致,找到 en 索引即可直接取得對應 ch。
  2. 線性搜尋:資料量小時 (百筆內) 遍歷效能可接受;大量資料建議改用 XPath 或匯入資料庫。
  3. 大小寫敏感:範例為精確比對,實務可加 strtolower() 做不分大小寫查詢。

進階優化:XPath 精準查詢

$xpath = new DOMXPath($xmldoc);
// 直接查找 en 節點值等於輸入值的 word 節點,再取其 ch 子節點
$query = "/words/word[en='$en_word']/ch";
$entries = $xpath->query($query);

if ($entries->length > 0) {
    echo $entries->item(0)->nodeValue;
} else {
    echo "找不到您輸入的單字";
}

XPath 版本更簡潔、效能更好 (內部索引優化),推薦生產環境使用。

擴充功能建議

  • 模糊查詢:XPath contains(en, '$keyword') 支援關鍵字搜尋
  • 多音/多義:單一 en 對應多個 ch 子節點
  • 發音/例句:擴充 <phonetic>, <example> 等子元素
  • 快取機制:將 XML 載入轉為 PHP 陣列快取 (APCu/Redis) 避免重複解析

總結

XML + DOMDocument 實作字典查詢展示了結構化資料檔案 + 標準解析 API 的輕量級應用模式。核心流程:載入 → 遍歷/XPath 查詢 → 索引對應取值 → 輸出。適合資料量中小、結構固定、無資料庫環境的查詢場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved