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

PHP Simple HTML DOM 解析器:用 DOM 方式輕鬆處理 HTML 文件

     編輯:PHP 相關知識

Simple HTML DOM 是 PHP 知名的 HTML 解析庫,提供類似 jQuery 的選擇器語法,讓伺服器端處理 HTML 如同瀏覽器端般直觀。

安裝與基本用法

require_once 'simple_html_dom.php';

$dom = new simple_html_dom();
// 從字串載入
$dom->load($html);
// 或從檔案/URL 載入
$dom->load_file('https://example.com');

核心方法:find() 選擇器

支援 CSS 選擇器語法,回傳元素陣列或單一元素:

// 取得第一個符合的元素 (索引 0)
$element = $dom->find('div.lookLeftname', 0);

// 取得所有符合的元素
$elements = $dom->find('div.lookLeftname');

元素屬性存取

屬性/方法說明範例
plaintext純文字內容 (去除標籤)$el->plaintext
innertext內部 HTML 內容$el->innertext
outertext包含自身的完整 HTML$el->outertext
href, src, class...直接存取屬性$el->href
tag標籤名稱$el->tag
id元素 ID$el->id

實務範例:爬取文章標題與連結

$html = file_get_contents('https://news.example.com');
$dom = new simple_html_dom();
$dom->load($html);

$articles = [];
foreach ($dom->find('article h2 a') as $link) {
    $articles[] = [
        'title' => $link->plaintext,
        'url' => $link->href,
        'time' => $link->find('time', 0)?->datetime ?? ''
    ];
}

$dom->clear(); // 釋放記憶體
unset($dom);
print_r($articles);

常用選擇器模式

// ID 選擇器
$dom->find('#main-content')

// 類別選擇器
$dom->find('.article-list .item')

// 屬性選擇器
$dom->find('a[target=_blank]')
$dom->find('img[data-src]')

// 後代/子代組合
$dom->find('ul > li:first-child')
$dom->find('table tr:nth-of-type(2)')

// 多重選擇器
$dom->find('h1, h2, h3')

記憶體管理重要提醒

  • 處理完畢務必呼叫 $dom->clear() 釋放循環參考
  • 大型文件建議分段處理或使用 XMLReader
  • 搭配 unset($dom) 確保記憶體回收

適用場景與限制

優點缺點
語法直觀、學習曲線低 大文件記憶體佔用高
支援不完整/錯誤的 HTML 效能不如原生 DOMDocument
選擇器功能豐富 非標準 HTML 可能解析異常
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved