遞歸函數在 php 中可用于遍歷數據結構,例如 html 文檔。它本質上是函數調用自身的方法。該技術在處理復雜數據結構時具有優勢。一個基本用法是遍歷 html 文檔,打印節點名稱并遞歸調用子節點。一個實戰案例是提取 html 文檔中的文本,其中函數附加當前節點的文本值并遞歸遍歷子節點。
PHP 遞歸函數遍歷 HTML 文檔
簡介
遞歸函數是一種在 PHP 中用于遍歷數據結構的強大技術,本質上是當函數調用自身時發生的情況。在處理復雜的數據結構(例如 HTML 文檔)時,使用遞歸函數具有很大的優勢。
基本用法
以下是一個使用遞歸函數遍歷 HTML 文檔的基本示例:
function traverse_html($html) { // 如果當前節點是元素,則打印其名稱 if ($html->nodeName) { echo $html->nodeName . "<br>"; } // 遍歷子節點 foreach ($html->childNodes as $child) { // 遞歸調用函數遍歷子節點 traverse_html($child); } }
登錄后復制
實戰案例:提取文本
要演示遞歸函數的實際應用,我們可以編寫一個函數來從 HTML 文檔中提取純文本:
function extract_text($html) { $text = ""; // 如果當前節點是文本,則附加到結果 if ($html->nodeType == XML_TEXT_NODE) { $text .= $html->nodeValue; } // 遍歷子節點并遞歸調用函數 foreach ($html->childNodes as $child) { $text .= extract_text($child); } return $text; }
登錄后復制
使用示例
要使用這些函數,我們可以加載 HTML 文檔到 DOMDocument 對象并調用遍歷函數:
$html_doc = new DOMDocument(); $html_doc->loadHTMLFile('document.html'); // 遍歷和打印 HTML 文檔的節點名稱 traverse_html($html_doc); // 提取 HTML 文檔中的純文本 $text = extract_text($html_doc); echo $text;
登錄后復制