Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> HTML

การแยกวิเคราะห์ (Parse) HTML ด้วย DOMDocument ของ PHP

คลาส DOMDocument และ DOMXPath ของ PHP ช่วยให้สามารถแยกวิเคราะห์และดึงข้อมูลจาก HTML/XML ได้อย่างมีประสิทธิภาพ

ตัวอย่าง: ดึงข้อความจาก div ที่ซ้อนกัน

<?php
$html = <<<HTML
<div class="main">
  <div class="text">
    This is text 1
  </div>
</div>
<div class="main">
  <div class="text">
    This is text 2
  </div>
</div>
HTML;

$dom = new DOMDocument();
$dom->loadHTML($html);

$xpath = new DOMXPath($dom);
// ค้นหา div class="text" ที่อยู่ภายใน div class="main"
$tags = $xpath->query('//div[@class="main"]/div[@class="text"]');

foreach ($tags as $tag) {
    var_dump(trim($tag->nodeValue));
}
?>

ผลลัพธ์

string 'This is text 1' (length=14)
string 'This is text 2' (length=14)

คำอธิบาย XPath Query

  • //div[@class="main"] - ค้นหา div ทุกตัวที่มี class="main" ในทุกระดับ
  • /div[@class="text"] - จากผลลัพธ์ข้างต้น ค้นหา div ลูกที่มี class="text"

เคล็ดลับการใช้งาน

  1. ใช้ libxml_use_internal_errors(true) ก่อน loadHTML() เพื่อป้องกัน Warning จาก HTML ที่ไม่สมบูรณ์
  2. ใช้ $dom->loadHTML('<?xml encoding="UTF-8"?>' . $html) เพื่อรองรับภาษาไทย/Unicode
  3. ใช้ DOMXPath สำหรับ Query ที่ซับซ้อน แทนการวนลูปหาเอง