PHP - DOM Parser Example

Xin chào các bạn trẻ đam mê lập trình! Hôm nay, chúng ta sẽ bắt đầu một hành trình đầy thú vị vào thế giới của PHP và việc phân tích DOM. Là giáo viên máy tính ở khu phố của bạn, tôi sẽ dẫn đường cho bạn từng bước trong cuộc phiêu lưu này. Vậy, hãy mang theo mũ bảo hiểm ảo của bạn, và chúng ta cùng nhảy vào!

PHP - DOM Parser Example

什么是DOM解析?

Trước khi chúng ta vào mã, hãy hiểu DOM parsing là gì. Hãy tưởng tượng bạn đang đọc một cuốn sách. DOM (Document Object Model) giống như cấu trúc của cuốn sách đó - các chương, đoạn văn, câu. DOM parsing giống như lật qua các trang và hiểu cách mọi thứ được tổ chức. Trong thế giới web, nó giúp chúng ta điều hướng và manipulates các tài liệu HTML.

Nhiệm vụ của chúng ta hôm nay

Chúng ta sẽ tạo một script PHP để đọc một tệp HTML, trích xuất một số thông tin cụ thể từ nó và hiển thị thông tin đó. Đó giống như một thám tử, nhưng thay vì giải quyết tội phạm, chúng ta đang giải quyết bí ẩn của các trang web!

Ví dụ

Hãy bắt đầu với tệp HTML của chúng ta. Chúng ta sẽ gọi nó là example.html:

<html>
<body>
<h1>My Home Page</h1>
<div class="menu">
<ul>
<li>HTML</li>
<li>PHP</li>
<li>JavaScript</li>
</ul>
</div>
</body>
</html>

Bây giờ, hãy tạo script PHP của chúng ta để phân tích HTML này. Chúng ta sẽ đặt tên cho nó là dom_parser.php:

<?php
// Tải tệp HTML
$htmlContent = file_get_contents("example.html");

// Tạo một đối tượng DOMDocument mới
$dom = new DOMDocument();

// Tải nội dung HTML vào DOMDocument
$dom->loadHTML($htmlContent);

// Tạo một đối tượng DOMXPath để truy vấn tài liệu
$xpath = new DOMXPath($dom);

// Tìm tất cả các phần tử <li>
$liElements = $xpath->query("//li");

// Hiển thị nội dung của mỗi phần tử <li>
foreach ($liElements as $li) {
echo $li->nodeValue . "<br>";
}
?>

Hãy phân tích này từng bước:

1. Tải tệp HTML

$htmlContent = file_get_contents("example.html");

Dòng này đọc toàn bộ nội dung của tệp HTML của chúng ta và lưu trữ nó trong biến $htmlContent. Đó giống như mở cuốn sách của chúng ta và chụp ảnh tất cả các trang một lần!

2. Tạo một đối tượng DOMDocument

$dom = new DOMDocument();

Ở đây, chúng ta đang tạo một đối tượng DOMDocument mới. Hãy tưởng tượng này như tạo một kính lúp đặc biệt giúp chúng ta kiểm tra cấu trúc HTML của chúng ta kỹ hơn.

3. Tải HTML vào DOMDocument

$dom->loadHTML($htmlContent);

Bây giờ chúng ta đang sử dụng kính lúp đặc biệt của chúng ta (DOMDocument) để xem nội dung HTML. Bước này chuẩn bị HTML cho việc phân tích.

4. Tạo một đối tượng DOMXPath

$xpath = new DOMXPath($dom);

XPath giống như la bàn để điều hướng cấu trúc HTML của chúng ta. Dòng này tạo một đối tượng XPath mà chúng ta sẽ sử dụng để tìm các phần tử cụ thể trong HTML.

5. Tìm các phần tử

  • $liElements = $xpath->query("//li");

    Đây là nơi phép thuật xảy ra! Chúng ta đang sử dụng XPath để tìm tất cả các phần tử <li> trong HTML. Biểu thức //li có nghĩa là "tìm tất cả các phần tử <li> ở bất kỳ đâu trong tài liệu".

    6. Hiển thị kết quả

    foreach ($liElements as $li) {
    echo $li->nodeValue . "<br>";
    }

    Cuối cùng, chúng ta duyệt qua mỗi phần tử <li> mà chúng ta tìm thấy và hiển thị nội dung của nó (nodeValue). Chúng ta thêm thẻ <br> sau mỗi mục để đặt chúng trên các dòng riêng biệt.

    Chạy script

    Khi bạn chạy script PHP này, nó sẽ输出:

    HTML
    PHP
    JavaScript

    Voilà! Chúng ta đã thành công trong việc trích xuất các phần tử danh sách từ tệp HTML của chúng ta.

    Các phương thức sử dụng

    Dưới đây là bảng các phương thức chính chúng ta đã sử dụng trong script của mình:

    Phương thức Mô tả
    file_get_contents() Đọc toàn bộ tệp vào một chuỗi
    new DOMDocument() Tạo một đối tượng DOMDocument mới
    loadHTML() Tải HTML từ một chuỗi
    new DOMXPath() Tạo một đối tượng DOMXPath mới
    query() Đánh giá biểu thức XPath
    nodeValue Lấy giá trị của một node

    Kết luận

    Và đây bạn có nó, các bạn! Chúng ta đã thực hiện những bước đầu tiên vào thế giới phân tích DOM với PHP. Nhớ rằng, thực hành làm cho hoàn hảo, vì vậy đừng ngần ngại thử nghiệm với các cấu trúc HTML khác nhau và các truy vấn XPath.

    Trong những năm dạy học của tôi, tôi đã phát hiện ra rằng cách tốt nhất để học là làm. Vậy, đây là một bài tập nhỏ cho bạn: Hãy thử thay đổi script để trích xuất các phần tử khác từ HTML. Có thể thử lấy nội dung của thẻ <h1>, hoặc tất cả các phần tử có một lớp cụ thể.

    Chúc các bạn vui vẻ lập trình, và mong DOM sẽ luôn ở bên bạn!

  • Credits: Image by storyset