PHP DOMDocument lấy html

Phương thức Mô tả $e->children [ [int $index] ] Trả về đối tượng con thứ N nếu chỉ mục được đặt, nếu không thì trả về một mảng con. $e->parent[] Trả về phần tử cha của phần tử. $e->first_child[] Trả về phần tử con đầu tiên, hoặc null nếu không tìm thấy. $e->last_child[] Trả về phần tử con cuối cùng hoặc null nếu không tìm thấy. $e->next_sibling [] Trả về anh chị em tiếp theo của phần tử hoặc null nếu không tìm thấy. $e->prev_sibling [] Trả về anh chị em trước đó của phần tử hoặc null nếu không tìm thấy

Tài liệu DOM. Hàm saveHTML[] là một hàm có sẵn trong PHP được sử dụng để tạo tài liệu HTML từ biểu diễn DOM. Chức năng này được sử dụng sau khi xây dựng tài liệu dom từ đầu. cú pháp

string DOMDocument::saveHTML[ DOMNode $node = NULL ]

Thông số. Hàm này chấp nhận một tham số $node, đây là tùy chọn và được sử dụng để xuất một tập hợp con của tài liệu. Giá trị trả về. Hàm này trả về tài liệu HTML nếu thành công hoặc FALSE nếu thất bại. Chương trình dưới đây minh họa DOMDocument. hàm saveHTML[] trong PHP. Chương trình.  

DOMDocument là một lớp được tích hợp trong PHP giúp các nhà phát triển điều hướng cây tài liệu HTML và cung cấp các phương thức để giúp tương tác với tài liệu

Kevin Guebert20 Tháng Sáu, 2018

Biểu tượng Twitter

Bản tin email dài đã đọc của Bên ngoài có bài viết hay nhất, báo cáo đầy tham vọng nhất và cách kể chuyện từng đoạt giải thưởng về hoạt động ngoài trời của chúng tôi. Đăng ký hôm nay

Gần đây, nhóm phát triển của chúng tôi cần tìm cách thao tác với phần nội dung của bài viết và trả về các đối tượng JSON của tất cả nội dung phần nội dung. Điều này là do các ràng buộc của Định dạng xuất bản Apple News, mà Bên ngoài đã tham gia gần đây. Chúng tôi cần tách hầu hết tất cả các thành phần HTML thành thành phần/đối tượng riêng của chúng. Như bạn có thể tưởng tượng, việc cố gắng viết mã tùy chỉnh để phân tích nội dung sẽ mất nhiều thời gian và sẽ không bao giờ nắm bắt được tất cả các hoán vị. Sau khi thực hiện một số nghiên cứu, chúng tôi biết rằng chúng tôi có thể sử dụng DOMDocument của PHP để thao tác nội dung HTML cơ thể của chúng tôi nhằm giải quyết vấn đề tách các phần tử HTML

DOMDocument là gì và nó được sử dụng khi nào?

DOMDocument là một lớp được tích hợp trong PHP giúp các nhà phát triển điều hướng cây tài liệu HTML và cung cấp các phương thức để giúp tương tác với tài liệu. Nếu bạn cần phân tích nội dung HTML hoặc thao tác nội dung HTML bằng PHP, DOMDocument có thể giúp bạn truy cập các nút một cách nhanh chóng và dễ dàng

Bắt đầu

Tại Bên ngoài, một điều chúng tôi tự hào là tìm kiếm và chia sẻ những thiết bị tốt nhất hiện có. Hôm nay, chúng ta sẽ lấy một bài báo về thiết bị và đếm đơn giản xem có bao nhiêu liên kết bên trong cơ thể. DOMDocument khá dễ thiết lập và từ đó, bạn có thể thao tác nó theo kịch bản cụ thể của mình

Xem bài viết tại đây. Nâng cấp tủ đồ của bạn với 10 ưu đãi tuyệt vời này

Đang tải tài liệu

  1. Khởi tạo DOMDocument[]

$dom = new DOMDocument[];
  1. Tải HTML của chúng tôi vào đối tượng $dom

$dom->loadHTML[$body]; 

Truy xuất các phần tử theo thẻ

1. Với HTML của chúng tôi hiện được tải vào đối tượng DOMDocument[], chúng tôi có thể sử dụng phương thức getElementsByTagName[] tồn tại trong lớp DOMDocument, để lấy tất cả các phần tử có liên kết

$links = $dom->getElementsByTagName['a'];

2. Đối với ví dụ cụ thể này, tất cả những gì chúng ta cần làm là lấy số lượng liên kết. Phương thức getElementsByTagName[] trả về một DOMNodeList, vì vậy chúng tôi sử dụng phương thức độ dài trên DOMNodeList để lấy số lượng liên kết

$body = HTML_CODE_HERE;

$dom = new DOMDocument[];

$dom->loadHTML[$body];

$links = $dom->getElementsByTagName['a'];

$num_links = $links->length;

print[$num_links]; // 21

Loại trừ một số yếu tố trong thẻ

3. Các bạn xem qua bài viết và HTML sẽ thấy chúng ta có 2 loại link. Chúng tôi có các liên kết thông thường trong văn bản nhưng chúng tôi cũng có các liên kết với một lớp btn. Các liên kết btn có kiểu nút cho chúng

4. Tiếp theo, chúng tôi sẽ lặp qua tất cả các liên kết để chúng tôi có thể lặp lại trên từng liên kết. Đủ đơn giản

foreach [$links as $link] {

}

5. Sau đó, tồn tại một phương thức getAttribute[] trên DOMDocument để lấy thuộc tính lớp

foreach [$links as $link] {

  $link_class = $link->getAttribute['class'];

}

6. Bước tiếp theo của chúng tôi là kiểm tra xem lớp btn có tồn tại trên liên kết không

foreach [$links as $link] {

  $link_class = $link->getAttribute['class'];

  if [strpos['btn', $link_class] !== FALSE] {

    $num_btns++;

  }

}

7. Đoạn mã trên có vẻ chính xác, nhưng nếu bạn nhìn vào HTML, bạn sẽ nhận thấy rằng một số liên kết không chứa lớp trên chúng. PHP sẽ đưa ra CẢNH BÁO vì điều này. Hãy khắc phục điều đó

________số 8

8. Điều cuối cùng chúng ta chưa làm là khởi tạo $num_btns

$num_btns = 0;

foreach [$links as $link] {

  $link_class = $link->getAttribute['class'];

  if [!empty[$link_class] && strpos['btn', $link_class] !== FALSE] {

    $num_btns++;

  }

}

print[$num_btns]; // 10

9. công việc tuyệt vời. Như bạn có thể thấy, thao tác với HTML có thể khá dễ dàng với DOMDocument

Thêm phần tử

10. DOMDocument có thể được sử dụng cho nhiều mục đích hơn là duyệt tài liệu. Bạn cũng có thể tạo các phần tử mới và nối chúng vào HTML hiện tại

11. Giả sử chúng ta muốn thêm một liên kết đến cuối trang này trỏ đến tất cả các bài báo về thiết bị của chúng ta. Chúng ta có thể tạo một phần tử liên kết bằng phương thức createElement

$dom = new DOMDocument[];
0

12. Sau khi chúng tôi đã tạo phần tử của mình, tất cả những gì chúng tôi cần làm bây giờ là thêm phần tử đó vào $dom. Hàm createElement tạo một thể hiện mới của DOMElement, trong trường hợp này là một liên kết, nhưng nó sẽ không hiển thị trong tài liệu trừ khi nó được chèn đúng cách. Trong trường hợp đó, chúng ta phải sử dụng hàm  appendChild[] để nó xuất hiện. Xem tài liệu để tham khảo

$dom->loadHTML[$body]; 
0

13. Đây là mã đầy đủ để thêm liên kết vào HTML của chúng tôi

$dom->loadHTML[$body]; 
1

Tóm tắt lại

Lớp PHP DOMDocument[] giúp các nhà phát triển dễ dàng duyệt qua và thao tác với bất kỳ nội dung HTML nào. Có nhiều phương thức khác trong lớp có thể hữu ích cho bạn. getEelemntsByTagName, createAttribute, createTextNode và createCDATASection chỉ để đặt tên cho một số. Không cần thêm bất kỳ thư viện hoặc mô-đun nào, tất cả đều được tích hợp sẵn

Để tìm hiểu thêm, hãy truy cập tài liệu PHP chính thức cho DOMDocument

Bản sao cơ thể

 

$dom->loadHTML[$body]; 
2

nộp cho

  • Công nghệ

Đọc cái này tiếp theo

Tất cả các ưu đãi Thứ Hai Điện Tử Yêu Thích Của Chúng Tôi

Bởi. Biên tập viên

Lính cứu hỏa yêu cầu ba lô đặc biệt. Trang trại bí ẩn được giao

Bởi. Lou Dzierzak

Ưu đãi trước Thứ Sáu Đen Chúng tôi yêu thích

Bởi. Biên tập viên

Hướng dẫn quà tặng của người chạy. Thiết bị chạy cho tất cả những người bạn thân của bạn

Bởi. Trình chỉnh sửa chạy bên ngoài

Tham gia Bên ngoài+ để nhận tạp chí Bên ngoài, truy cập nội dung độc quyền, hàng nghìn kế hoạch đào tạo, v.v.

Chủ Đề