Tài liệu DOM. Hàm getElementsByTagName[] là một hàm sẵn có trong PHP, được sử dụng để trả về một thể hiện mới của lớp DOMNodeList chứa tất cả các phần tử của tên thẻ cục bộ
cú pháp
DOMNodeList DOMDocument::getElementsByTagName[ string $name ]
Thông số. Hàm này chấp nhận một tham số $name chứa tên thẻ cục bộ để khớp. Giá trị * được sử dụng để khớp với tất cả các thẻ
Trong bài viết trước mình đã trình bày sơ lược về chủ đề biểu thức chính quy trong PHP. Kết quả là tôi đã nhận được một số nhận xét đều nói giống nhau rằng việc phân tích cú pháp HTML bằng cách sử dụng các biểu thức thông thường không phải là một phương pháp hay, vì vậy, như tôi đã trả lời một trong những người phản hồi, sẽ rất hữu ích khi thực hiện phân tích cú pháp khi cấu trúc của . Trong hướng dẫn này, tôi cung cấp một phương pháp bổ sung sử dụng DomDocument, đây là một lớp PHP tích hợp có thể phân tích cú pháp mã HTML, tìm kết quả khớp và thay thế các phần của HTML mà không cần biểu thức chính quy
Hướng dẫn này bao gồm 4 nghiên cứu điển hình
- Trường hợp 1. Cách tự động tạo hình ảnh phản hồi từ tất cả các hình ảnh trong trang
- Trường hợp 2. Cách tạo video phản hồi từ tất cả các video Youtube trong trang
- Trường hợp 3. Cách xóa các thẻ kiểu khỏi các phần tử HTML trong trang
- Trường hợp 4. Cách tự động thêm rel=nofollow vào tất cả các link
Joseph Benharosh là nhà phát triển web toàn diện và là tác giả của Sách điện tử Các yếu tố cần thiết của PHP hướng đối tượng.
# Trường hợp 1. Cách tự động tạo hình ảnh phản hồi từ tất cả các hình ảnh trong trang
Để tạo hình ảnh phản hồi, chúng tôi sẽ sử dụng DomDocument để bọc hình ảnh trong div có lớp 'responsive-img'.
function makeResposiveImages[$html='']
{
// Create a DOMDocument
$dom = new DOMDocument[];
// Load html including utf8, like Hebrew
$dom->loadHTML[mb_convert_encoding[$html, 'HTML-ENTITIES', 'UTF-8']];
// Create the div wrapper
$div = $dom->createElement['div'];
$div->setAttribute['class', 'responsive-img'];
// Get all the images
$images = $dom->getElementsByTagName['img'];
// Loop the images
foreach [$images as $image]
{
//Clone our created div
$new_div_clone = $div->cloneNode[];
//Replace image with wrapper div
$image->parentNode->replaceChild[$new_div_clone,$image];
//Append image to wrapper div
$new_div_clone->appendChild[$image];
}
// Save the HTML
$html = $dom->saveHTML[];
return $html;
}
Để sử dụng lớp DomDocument, trước tiên chúng ta cần khởi tạo nó bằng cách sử dụng
$dom = new DOMDocument[];
Khi tải HTML, bạn nên sử dụng tham số UTF-8 cho các ngôn ngữ không phải tiếng Anh.
$dom->loadHTML[mb_convert_encoding[$html, 'HTML-ENTITIES', 'UTF-8']];
Chúng tôi tạo một div gói cho những hình ảnh có lớp 'responsive-img'
$div = $dom->createElement['div'];
$div->setAttribute['class', 'responsive-img'];
Để trích xuất hình ảnh từ HTML
$images = $dom->getElementsByTagName['img'];
Tiếp theo, chúng tôi lặp qua các hình ảnh và bọc từng hình ảnh bằng div gói
Cuối cùng, chúng tôi lưu các thay đổi với
$html = $dom->saveHTML[];
Thí dụ
Tương tự như SimpleXML, bạn có thể sử dụng DOMDocument để phân tích cú pháp XML từ một chuỗi hoặc từ một tệp XML
1. Từ một chuỗi
$doc = new DOMDocument[];
$doc->loadXML[$string];
2. Từ một tập tin
Ví dụ về phân tích cú pháp
Xem xét XML sau
PHP - An Introduction
$5.95
1
PHP - Advanced
$25.00
2
Đây là một mã ví dụ để phân tích nó
function makeResposiveImages[$html='']
{
// Create a DOMDocument
$dom = new DOMDocument[];
// Load html including utf8, like Hebrew
$dom->loadHTML[mb_convert_encoding[$html, 'HTML-ENTITIES', 'UTF-8']];
// Create the div wrapper
$div = $dom->createElement['div'];
$div->setAttribute['class', 'responsive-img'];
// Get all the images
$images = $dom->getElementsByTagName['img'];
// Loop the images
foreach [$images as $image]
{
//Clone our created div
$new_div_clone = $div->cloneNode[];
//Replace image with wrapper div
$image->parentNode->replaceChild[$new_div_clone,$image];
//Append image to wrapper div
$new_div_clone->appendChild[$image];
}
// Save the HTML
$html = $dom->saveHTML[];
return $html;
}
0Điều này sẽ xuất ra
Tiêu đề của cuốn sách 1 là PHP - Giới thiệu và nó có giá 5 đô la. 95
Tên của cuốn sách 2 là PHP - Nâng cao và nó có giá 25 đô la. 00