Cách sử dụng domdocument trong php?

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

  1. 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
  2. Trường hợp 2. Cách tạo video phản hồi từ tất cả các video Youtube trong trang
  3. Trường hợp 3. Cách xóa các thẻ kiểu khỏi các phần tử HTML trong trang
  4. Trường hợp 4. Cách tự động thêm rel=nofollow vào tất cả các link

Cách sử dụng domdocument trong php?

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

________số 8

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

DOMDocument() trong PHP là gì?

Tài liệu DOM. Hàm getElementsByTagName() là 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 thành phần của tên thẻ cục bộ .

Chúng ta có thể sử dụng DOM trong PHP không?

Vì vậy, nếu bạn đã từng làm việc với nội dung của một bài đăng (loại bài đăng hoặc loại bài đăng tùy chỉnh, đối với vấn đề đó) và bạn cần thao tác với các thẻ giống như cách bạn làm với JavaScript, thì hãy using the DomDocument library is one of the most powerful tools are your disposal.

Làm cách nào để lấy phần tử DOM trong PHP?

Tài liệu DOM. Hàm getElementById() là một hàm có sẵn trong PHP dùng để tìm kiếm một phần tử có id nhất định. Thông số. Hàm này chấp nhận một tham số duy nhất $elementId chứa id để tìm kiếm. Giá trị trả về. Hàm này trả về DOMElement hoặc NULL nếu không tìm thấy phần tử.

Làm cách nào để tạo một đối tượng DOM trong PHP?

$dom = new DOMDocument('1. 0', 'utf-8'); $element = $dom->createElement('foo', 'me & you'); $dom echo $dom->saveXML();