Phân tích cú pháp và quét HTML bằng thư viện HTML DOM đơn giản. Tạo mẫu HTML bằng PHP

Trong khi cập nhật trang web, tôi nhận thấy bố cục cũ của mình khi tôi còn mới làm quen với PHP. Dựa trên kinh nghiệm có được, những thiếu sót của phương pháp bố cục cũ sẽ lộ rõ ​​khi HTML đóng khung PHP và không nằm bên trong nó.

Thật không may, tôi vẫn chưa tìm thấy điều gì thú vị về chủ đề này để đọc về cách bố trí nó tốt nhất. Tuy nhiên, khi nhìn vào mã bố cục hiện đại, tôi ngày càng nhận thấy rằng html hầu như luôn nằm bên trong các cấu trúc php. Và có những lợi thế đáng kể cho việc này.

Hãy xem xét những lợi thế của việc có HTML bên trong PHP bằng ví dụ về đầu ra tiêu đề trong WordPress.

Dưới đây là cấu trúc từ loại mã sau: nếu có dữ liệu trong một trường tùy chỉnh nhất định thì chúng tôi sẽ hiển thị tiêu đề có dữ liệu này. Tôi lấy mã bố cục ở dạng ban đầu như trước đây. Anh ấy trông như thế này:

< ! -- Title -- >

< h3 class = "archive-entry-title" itemprop = "name" > < a href = " " rel = "đánh dấu" title = " !}" > ID , "name_rus" , đúng ) ) : ?>ID, "name_rus", đúng); ?> < / a > < / h3 >

< ! -- Title End -- >

Có một số nhược điểm đối với thiết kế mã này. Thứ nhất, nó không trực quan - mọi thứ đều được viết bằng một dòng. Điều này được thực hiện có mục đích để không có những khoảng trống giữa các thẻ H1, H2, H3. Rốt cuộc, không có gì tốt khi có khoảng trắng trong thẻ tiêu đề. Không thể dự đoán được, như trong trường hợp này, giữa công cụ tìm kiếm, điều này sẽ ảnh hưởng đến trang web. Liệu những khoảng trống thừa có làm giảm sức mạnh của danh hiệu hay không. Cho rằng không có câu trả lời cho câu hỏi như vậy, người ta nên giả định điều tồi tệ nhất. Và do đó viết cùng nhau.

Mặt khác, tiếp tục những gì đã được nói, nếu chúng ta tạo hình ảnh cho đoạn mã trên:

< ! -- Title -- >

< h3 class = "archive-entry-title" itemprop = "name" >

< a href = " " rel = "đánh dấu" title = " !}" >

ID , "name_rus" , đúng ) ) : ?>

ID, "name_rus", đúng); ?>

< / a >

< / h3 >

< ! -- Title End -- >

Sau đó khi xem trong trình duyệt HTML của mã trang trong tiêu đề của thẻ h3 chúng ta sẽ thấy như sau:

Chúng tôi cũng cần mã dễ đọc khi chỉnh sửa và sau đó cũng được hiển thị liền mạch khi tải trang web. Cụ thể, để nó trông như thế này:

Để làm điều này, bạn nên sử dụng PHP và gói toàn bộ Mã HTML vào đó. Và chúng ta có được cái nhìn sau mã php cho tiêu đề WordPress:

< ! -- Title -- >

Nếu bạn là người mới làm quen với PHP thì bạn cần biết một số định nghĩa.
Trước hết, PHP là ngôn ngữ lập trình và nó được sử dụng để viết các lệnh (tập lệnh) gửi đến máy chủ. Nói một cách đơn giản hơn, khi Trợ giúp về PHP chúng ta có thể liên lạc với máy chủ.
Các lệnh PHP có thể dễ dàng nhúng vào các trang HTML. Chính tài sản này là lợi thế quan trọng Ngôn ngữ PHP trước các ngôn ngữ như Perl và C.

Cú pháp PHP

Mã script PHP bắt đầu sau thẻ mở. Văn bản giữa hai thẻ này được đọc bởi một chương trình nằm trên máy chủ và kết quả được xuất ra tài liệu HTML. Hãy xem một ví dụ:



Ví dụ

include("sidebar.htm" );
?>


Nếu cần chèn nội dung nào đó vào mã html của một trang, chúng ta cần sử dụng lệnh include (insert). Tiếp theo, chúng tôi chỉ ra địa chỉ tệp và kết thúc dòng, như trong CSS;

Chèn mã HTML vào các trang web

Theo quy định, các cột bên ( thanh bên) và tầng hầm ( chân trang) không thay đổi trên tất cả các trang của trang web. Vì thế các mã

.....
Bạn có thể đặt “sidebar.htm” và “footer.htm” vào các trang htm riêng biệt và chèn chúng vào các trang của trang bằng lệnh include. Nếu cùng lúc đó chúng ta đưa nó vào tập tin riêng biệt và nội dung chính -
.....
, thì mã của trang của chúng tôi sẽ trông như sau:



Ví dụ

include("sidebar.htm" );
include("content.htm" );
include("footer.htm" );
?>


nội dung sidebar.htm


Đây
nội dung
Của anh ấy
thanh bên

Tương tự với file content.htm và footer.htm.

Với kiểu tạo trang này, bạn chỉ cần thực hiện các thay đổi đối với một tệp “sidebar.htm” để tất cả các trang của trang web đều thay đổi. Điều này rất thuận tiện nếu trang web của bạn bao gồm hàng trăm hoặc hàng nghìn trang.

PHP trên máy tính của bạn

Để bạn có thể làm việc với các tập lệnh PHP và xem kết quả thực thi trong trình duyệt, bạn cần cài đặt một máy chủ web đang hoạt động với PHP trên máy tính cục bộ của mình.
Denver phù hợp nhất cho những nhiệm vụ như vậy. (trang web chính thức cung cấp mọi thứ bạn cần miễn phí) Bộ cài đặt bao gồm - Apache, php và MySQL. Nói cách khác, máy tính của bạn sẽ có một máy chủ đầy đủ chức năng để lưu trữ trang web.

Để mã PHP hoạt động được trong trang HTML, bạn cần mở file .htaccess trong bất kỳ soạn thảo văn bản và viết như sau:

Ứng dụng AddHandler/x-httpd-php .html

Mục nhập này cho phép thực thi Tập lệnh PHP trong các trang HTML.

Hoặc thay đổi phần mở rộng tập tin. html trên. php

Tính năng PHP

PHP có khả năng làm được nhiều việc hơn là chỉ hiển thị HTML. Tính năng PHP bao gồm hình ảnh, tập tin PDF và thậm chí cả phim Flash (sử dụng libswf và Ming) được tạo nhanh chóng. PHP cũng có khả năng tạo ra bất kỳ dữ liệu văn bản nào như XHTML và các tệp XML khác. PHP có thể tự động tạo các tệp như vậy và lưu chúng vào hệ thống tập tin máy chủ của bạn, thay vì đưa nó cho máy khách, do đó tổ chức bộ đệm chứa nội dung động nằm ở phía máy chủ.

Một trong những ưu điểm đáng kể của PHP là hỗ trợ nhiều loại cơ sở dữ liệu. Tóm lại, PHP có rất nhiều thứ để cung cấp cho bạn! Bạn có thể tìm hiểu thêm về lợi ích của PHP tại www.php.su.

Ngày 1 tháng 2 năm 2015

Từ tác giả: PHP hay HTML – cái nào tốt hơn? Đừng bao giờ hỏi một câu hỏi như vậy với một chuyên gia. Thứ nhất, trong mắt anh ấy, bạn sẽ ngay lập tức “rơi” xuống mức một “ấm trà” hoàn chỉnh. Và thứ hai... Câu hỏi như vậy chỉ có thể nảy sinh từ một “bộ ấm trà” hoàn chỉnh. Chà, điều đó có nghĩa là hôm nay chúng ta sẽ tổ chức một “tiệc trà” dành riêng cho chủ đề kỳ lạ này.

Con gà, quả trứng - ai có trước?

Bạn không nên nhìn tiêu đề này với con mắt như vậy. Tin tôi đi, câu hỏi về mức độ ưu tiên giữa ngôn ngữ siêu văn bản cũng có vẻ hơi đáng sợ đối với tôi. Tại sao cái này rất? Chà, vì đây không phải là lần đầu tiên chúng ta gặp nhau và tôi thực sự hy vọng rằng những câu hỏi như vậy sẽ không nảy sinh với bạn. Nhưng dù sao chúng ta cũng sẽ tìm ra nó!

Đầu tiên chúng ta hãy tìm hiểu thế nào là một trang web hiện đại. Để không phải “đi loanh quanh” lâu, hãy nắm bắt thông tin ngay. Bây giờ mọi tài nguyên web đều được tạo bằng bốn công nghệ:

HTML – nó (như trước đây) được sử dụng để đánh dấu các trang thành các phần tử cấu thành của chúng.

CSS - chịu trách nhiệm về vẻ bề ngoàiđịa điểm.

JavaScript - cung cấp tương tác giao diện người dùng ( giao diện người dùng) với một người.

PHP – cung cấp sáng tạo năng động tài nguyên và tất cả “hậu quả” tiếp theo: CMS, plugin cho chúng, v.v.

Vâng, tôi gần như quên mất MySQL. Đây là một DBMS. Bạn có nghĩ tôi đang đùa không? Không thực sự! Chỉ là chủ đề của chúng ta rất “trà” - HTML khác với PHP như thế nào. Tôi sẽ trao giải Ig Nobel cho những câu hỏi này (có những câu hỏi như vậy).

Chà, hãy thử loại bỏ một trong những thành phần được liệt kê của một trang web hiện đại và bạn sẽ không nhận được một nguồn tài nguyên động mà là một nỗi kinh hoàng tĩnh gần như "dệt". Đặc biệt là nếu bạn thoát khỏi nó.

Sự khác biệt trong ví dụ

Những tranh luận bằng miệng về mức độ ưu tiên và sự khác biệt giữa hai ngành học có thể được đưa ra không ngừng. Tốt hơn Sự khác biệt của PHP từ phân tích cú pháp HTML vào ví dụ cụ thể. Hãy cùng tìm hiểu xem tùy chọn nào sẽ dễ dàng thay đổi màu nền hơn.

Có một công cụ rất phổ biến được gọi là WordPress. Nó chạy trên PHP. Để so sánh, hãy lấy đánh dấu của một trang web thông thường và thử thay đổi nó màu nền. Sau đó, chúng tôi sẽ thực hiện tương tự bằng bảng quản trị CMS.

Để hiểu rõ hơn về sự khác nhau giữa HTML và PHP, hãy thử tìm dòng kiểm soát màu nền trong mã này. Hãy để tôi nói ngay với bạn rằng cô ấy không có ở đây. Thuộc tính kiểu này (màu nền) cần được chỉ định. Đồng thời, bạn cần biết nơi để thêm nó. Và toàn bộ trang web không chỉ có một trang mà là hàng chục trang.

Bây giờ chúng ta hãy làm tương tự thông qua phần hành chính Bảng điều khiển WordPress. Để làm điều này chúng ta cần phải đi đến biên tập trực quan trang và trong chủ đề đã được thiết lập thay đổi tham số tương ứng bằng cách nhấn một số nút.

Trong bài viết này, tôi sẽ không cho bạn biết lý do tại sao cần có các trang web và loại tiền bạn có thể kiếm được từ chúng. Ở đây tôi chỉ muốn nói về sự khác biệt giữa các trang web được tạo bằng các công cụ khác nhau.

Hãy xem xét một trang web HTML thông thường

Một mặt, chúng ta sẽ lấy một trang HTML thông thường, về cơ bản là trang web tĩnh. Nói một cách đơn giản, có một số lượng trang nhất định có thông tin được kết nối với nhau bằng các liên kết. Thông thường không có nhiều trang trên một trang như vậy, mặc dù vẫn có những trường hợp ngoại lệ.


Và có rất ít trang trên những trang như vậy vì khi một trang như vậy bắt đầu phát triển, việc quản lý sẽ trở nên rất bất tiện. Vì lý do này, một người có thể ngừng theo dõi trang web hoàn toàn hoặc cố gắng sử dụng một số loại hệ thống quản lý nội dung (CMS). Cũng có những người đang cố gắng học ngôn ngữ lập trình cho WEB để làm cho trang web của họ được tự động hóa và do đó thuận tiện hơn cho việc quản lý.

Nhưng như kinh nghiệm cho thấy, chỉ một số ít có thể đáp ứng được nhiệm vụ này và trang web của họ tiếp tục tăng trưởng và phát triển.

Còn những người khác thì sao?

Một số người lùng sục trên Internet, những người khác cố gắng mua sách giấy. Nhưng nếu không có kiến ​​thức cơ bản về cấu trúc của các ngôn ngữ lập trình đó, không hiểu những kiến ​​thức cơ bản về xây dựng trang web, những nỗ lực như vậy thường không dẫn đến kết quả gì.

Mặt khác, hãy xem xét một trang web được tạo bằng cách sử dụng kết hợp HTML thông thường và ngôn ngữ đơn giản lập trình web - PHP.

Sự khác biệt quan trọng nhất giữa trang này và trang trước đó là một trang như vậy có thể được tạo dưới dạng hàm tạo từ các khối. Chúng tôi đã tạo tiêu đề trang web - chúng tôi đặt nó vào một tệp riêng biệt, chúng tôi tạo một khối bên trái với điều hướng trang web - chúng tôi đặt nó vào một tệp riêng biệt, v.v.

Điều này mang lại cho chúng ta điều gì?

Nó mang lại tự do. Những thứ kia. Bây giờ chúng ta có thể kết nối các khối này với khung chính và ngay cả khi theo thời gian chúng ta có 10.000 trang trên trang web và đột nhiên chúng ta cần thay đổi một số thành phần điều hướng, thì sẽ không có gì phức tạp về điều đó. Đã mở tệp bằng khối cần thiết, đã chỉnh sửa và thế là xong! Trên toàn bộ 10.000 trang, sự thay đổi này diễn ra ngay lập tức.

Ngoài điều này ra thì tất cả thông tin hữu ích(bài viết, mô tả về hàng hóa và dịch vụ, bài học, ghi chú, v.v.) của trang web đó có thể được lưu trữ trong cơ sở dữ liệu, cung cấp thêm thông tin nhiều lợi ích hơn:

— Trang web chiếm ít không gian hơn;
- Giản thể hỗ trợ dữ liệu;
— Nó làm cho việc thay đổi bất kỳ dữ liệu nào trở nên dễ dàng hơn;
— Có thể đếm bất kỳ thông tin nào (số lần một trang được xem, một tệp đã được tải xuống, các nhận xét đã được thêm vào, v.v.);
— Bạn có thể sử dụng nhiều trên trang web PHP làm sẵn kịch bản;
- vân vân.

HTML hoặc PHP

Nếu chúng ta so sánh giữa các trang web HTML và PHP với ô tô, thì cũng giống như ô tô hiện đại đã trở nên thoải mái hơn, mạnh mẽ hơn, nhiều chức năng hơn và đồng thời bắt đầu tiêu thụ ít nhiên liệu hơn so với các trang web tương tự từ 50 năm trước, trang web PHP cũng vậy. đã trở nên nhẹ hơn, nhiều chức năng hơn, dễ quản lý hơn và di động hơn so với đối thủ HTML của nó.

Thật không may, không thể đề cập đầy đủ chủ đề này trong khuôn khổ một bài viết, nhưng tôi nghĩ ngay cả từ những điểm tôi đã mô tả ở đây, bạn sẽ có thể đưa ra kết luận về việc nên tạo trang web nào tốt hơn để theo kịp theo thời gian và nhận được lợi tức đầu tư kha khá vào nỗ lực tạo trang web.

Evgeniy Popov– Tác giả của khóa học video dài 22,5 giờ “Tất cả các khoảnh khắc kỹ thuật trong kinh doanh trực tuyến ở định dạng video 2 hoặc PHP + MySQL dành cho người mới bắt đầu”, trong đó toàn bộ quá trình được hiển thị trực tiếp trên màn hình máy tính của bạn kèm theo giải thích bằng giọng nói Tạo PHP trang web từ đầu.

Bạn sẽ học cách lấy danh sách tất cả các bài viết được xuất bản trên một trang web.

Bước 1. Chuẩn bị

Trước hết bạn cần sao chép thư viện đơn giảnHTMLdom, có sẵn trên trang web

Kho lưu trữ tải xuống chứa nhiều tệp nhưng bạn chỉ cần một tệp simple_html_dom.php. Tất cả các tập tin khác là ví dụ và tài liệu.

Bước 2: Phân tích cú pháp cơ bản

Thư viện này rất dễ sử dụng nhưng có một số điều cơ bản bạn cần tìm hiểu trước khi đưa nó vào hoạt động.

$html = new simple_html_dom();
// Tải từ chuỗi
$html->tải("

Chào thế giới!

");
// Cập nhật dử liệu
$html->load_file("http://net.tutsplus.com/");

Bạn có thể tạo một đối tượng nguồn bằng cách tải HTML từ một chuỗi hoặc từ một tập tin. Việc tải từ một tập tin có thể được thực hiện bằng cách chỉ định URL hoặc từ hệ thống tệp cục bộ của bạn.

Ghi chú: Phương pháp tải tập tin()đại biểu làm việc Hàm PHP tập tin_get_contents. Nếu như allow_url_fopen không được đặt thành giá trị ĐÚNG VẬY trong tập tin của bạn php.ini, thì bạn có thể không mở được tập tin đã xóa Như vậy. Trong trường hợp này, bạn có thể quay lại sử dụng thư viện CURL để tải trang đã xóa và sau đó đọc bằng phương pháp trọng tải().

Truy cập thông tin

Khi bạn có một đối tượng DOM, bạn có thể bắt đầu làm việc với nó bằng phương thức tìm thấy() và tạo ra các bộ sưu tập. Bộ sưu tập là một nhóm các đối tượng được tìm thấy bởi bộ chọn. Cú pháp rất giống với jQuery.



Chào thế giới!


Đã từng ở đây.




Trong này Ví dụ về HTML Chúng ta sẽ tìm ra cách truy cập thông tin trong đoạn thứ hai, thay đổi nó và sau đó in kết quả của các hành động.

1. # tạo và tải HTML
2. include("simple_html_dom.php");
3. $html = new simple_html_dom();
4. $html->tải(“

Chào thế giới!

“);
5. # lấy phần tử đại diện cho đoạn thứ hai
6. $element = $html->find(“p“);
7. # sửa đổi nó
8. $element->innertext .= “ và chúng tôi sẽ ở đây.“;
9. # Đầu ra!
10. echo $html->save();

Dòng 2-4: Tải HTML từ một chuỗi như đã giải thích ở trên.

Dòng 6: Tìm tất cả các thẻ

Trong HTML và trả chúng về một mảng. Đoạn đầu tiên sẽ có chỉ số 0 và các đoạn tiếp theo sẽ được lập chỉ mục tương ứng.

Dòng 8: Chúng tôi truy cập phần tử thứ hai trong bộ sưu tập đoạn văn của mình (chỉ mục 1), thêm văn bản vào thuộc tính văn bản bên trong của nó. Thuộc tính văn bản bên trong biểu thị nội dung giữa các thẻ và thuộc tính văn bản bên ngoài biểu thị nội dung bao gồm các thẻ. Chúng ta có thể thay thế hoàn toàn thẻ bằng thuộc tính văn bản bên ngoài.

Bây giờ hãy thêm một dòng và sửa đổi lớp thẻ của đoạn thứ hai.

$element->class = "class_name";
echo $html->save();

HTML cuối cùng sau lệnh lưu sẽ trông như thế này:



Chào thế giới!


Chúng tôi ở đây và chúng tôi ở đây để ở lại.



Bộ chọn khác

Một vài ví dụ khác về bộ chọn. Nếu bạn đã sử dụng jQuery, mọi thứ sẽ có vẻ quen thuộc với bạn.

# lấy phần tử đầu tiên được tìm thấy với id=“foo“
$single = $html->find("#foo", 0);
# lấy tất cả các phần tử có lớp “foo“
$collection = $html->find(".foo");
# lấy tất cả các thẻ liên kết trên trang
$collection = $html->find("a");
# lấy tất cả các thẻ liên kết nằm bên trong thẻ H1
$collection = $html->find("h1 a");
# có được mọi thứ thẻ img với tiêu đề="himom"!}
$collection = $html->find("img");

Ví dụ đầu tiên yêu cầu một số lời giải thích. Tất cả các truy vấn đều trả về các bộ sưu tập theo mặc định, ngay cả truy vấn ID chỉ trả về một phần tử. Tuy nhiên, bằng cách chỉ định tham số thứ hai, chúng ta đang nói “chỉ trả về phần tử đầu tiên từ bộ sưu tập”.

Nó có nghĩa là $độc thân- một phần tử đơn lẻ chứ không phải một mảng các phần tử có một thành viên.

Các ví dụ còn lại khá rõ ràng.

Tài liệu

Tài liệu đầy đủ cho thư viện có sẵn tại .

Bước 3: Ví dụ thực tế

Để chứng minh thư viện đang hoạt động, chúng tôi sẽ viết một tập lệnh để lấy nội dung của trang web net.tutsplus.com và tạo danh sách tiêu đề và mô tả các bài viết được trình bày trên trang web....chỉ là một ví dụ. Quét là một thủ thuật web và không được sử dụng mà không có sự cho phép của chủ sở hữu tài nguyên.

Bao gồm("simple_html_dom.php");
$articles = mảng();
getArticles("http://net.tutsplus.com/page/76/");

Hãy bắt đầu bằng cách kết nối thư viện và gọi hàm nhận được bài viết cho biết trang mà chúng tôi muốn bắt đầu phân tích cú pháp.

Chúng tôi cũng sẽ khai báo một mảng toàn cục để giúp thu thập tất cả thông tin về các bài viết ở một nơi dễ dàng hơn. Trước khi bắt đầu phân tích cú pháp, chúng ta hãy xem bài viết trên trang web Nettuts+ được mô tả như thế nào.



...


Tiêu đề




Sự miêu tả



Đây là định dạng cơ bản của một bài đăng trên trang web, bao gồm cả bình luận. mã nguồn. Tại sao bình luận lại quan trọng? Chúng được trình phân tích cú pháp tính là các nút.

Bước 4: Khởi động chức năng phân tích cú pháp

hàm getArticles($page) (
bài viết $ toàn cầu;
$html = new simple_html_dom();
$html->load_file($page);
// ... Hơn nữa...
}

Chúng ta bắt đầu bằng việc khai báo một mảng toàn cục, tạo đối tượng mới đơn giản_html_dom, sau đó tải trang để phân tích cú pháp. Chức năng này sẽ được gọi đệ quy, vì vậy chúng tôi đặt URL trang cho nó làm tham số.

Bước 5. Tìm thông tin chúng tôi cần

1. $items = $html->find("div");
2. foreach($items as $post) (
3. # nhớ đếm bình luận dưới dạng nút
4. $articles = array($post->children(3)->outertext,
5. $post->children(6)->first_child()->outertext);
6. }

Đây là bản chất của chức năng nhận được bài viết. Chúng ta cần xem xét nó chi tiết hơn để hiểu điều gì đang xảy ra.

Dòng 1: Tạo một mảng các phần tử - tag div với lớp xem trước. Bây giờ chúng tôi có một bộ sưu tập các bài viết được lưu trong $mục.

Dòng 4: $bài đăng bây giờ đề cập đến một div duy nhất của lớp xem trước. Nếu nhìn vào HTML gốc, chúng ta có thể thấy phần tử con thứ ba là một thẻ H1, trong đó có tiêu đề của bài viết. Chúng tôi lấy nó và thích hợp nó $bài viết.

Hãy nhớ bắt đầu từ 0 và tính đến các nhận xét về mã nguồn khi xác định chỉ mục nút chính xác.

Dòng 5: Hậu duệ thứ sáu $bài đăng- Cái này

. Chúng tôi cần văn bản mô tả từ nó, vì vậy chúng tôi sử dụng văn bản bên ngoài- thẻ đoạn văn sẽ được đưa vào mô tả. Một mục trong mảng bài viết sẽ trông giống như thế này:

$articles = “Tiêu đề bài viết”;
$articles = “Đây là mô tả bài viết của tôi”

Bước 6, Làm việc với các trang

Bước đầu tiên là xác định cách tìm trang tiếp theo. Trên trang Nettuts+, rất dễ đoán số trang từ URL, nhưng chúng ta cần lấy liên kết trong quá trình phân tích cú pháp.

Nếu bạn nhìn vào HTML, bạn sẽ thấy như sau:

»

Đây là đường dẫn tới trang tiếp theo và chúng ta có thể dễ dàng tìm thấy nó theo lớp ‘ liên kết bài viết tiếp theo'. Bây giờ thông tin này có thể được sử dụng.

If($next = $html->find("a", 0)) (
$URL = $next->href;
$html->clear();
bỏ đặt($html);
getArticles($URL);
}

Trong dòng đầu tiên, chúng tôi kiểm tra xem liệu chúng tôi có thể tìm thấy tài liệu tham khảo với lớp không liên kết bài viết tiếp theo. Lưu ý việc sử dụng tham số thứ hai trong hàm tìm thấy(). Bằng cách này, chúng tôi chỉ ra rằng chúng tôi muốn lấy phần tử đầu tiên (chỉ mục 0) trong bộ sưu tập được trả về. $tiếp theo chứa một phần tử duy nhất, không phải là một bộ sưu tập.

Sau đó chúng tôi gán liên kết HREF cho biến $URL. Điều này rất quan trọng vì tiếp theo chúng ta sẽ loại bỏ đối tượng HTML. Để ngăn chặn rò rỉ bộ nhớ trong php5, đối tượng hiện tại đơn giản_html_dom phải được xóa và bỏ đặt trước khi có thể tạo đối tượng khác. Nếu điều này không được thực hiện thì tất cả bộ nhớ khả dụng có thể được hấp thụ.

Cuối cùng, chúng ta gọi hàm getArticles bằng URL Trang tiếp theo. Đệ quy bị hỏng khi không còn trang nào để phân tích.

Bước 7. Xuất kết quả

Đầu tiên, chúng ta sẽ cài đặt một số style cơ bản. Mọi thứ hoàn toàn tùy ý - bạn có thể cài đặt những gì bạn thích.

#chủ yếu (
lề: tự động 80px;
chiều rộng: 500px;
}
h1 (
phông chữ: đậm 40px/38px helvetica, verdana, sans-serif;
lề:0;
}
h1 một (
màu:#600;
trang trí văn bản: không có;
}
P(
lý lịch: #ECECEC;
phông chữ:10px/14px verdana, sans-serif;
lề:8px 0 15px;
đường viền: 1px #CCC liền khối;
phần đệm: 15px;
}
.mục(
phần đệm: 10px;
}

Sau đó chúng tôi viết một hàm PHP nhỏ trên trang để hiển thị thông tin đã lưu trước đó.

foreach($bài viết dưới dạng $item) (
tiếng vang "

";
tiếng vang $ mục;
tiếng vang $ mục;
tiếng vang "
";
}
?>

Kết quả cuối cùng là một trang HTML liệt kê tất cả các bài viết từ các trang Nettuts+, bắt đầu bằng bài viết được chỉ định trong lệnh gọi đầu tiên getArticles().

Bước 8. Kết luận

Nếu bạn bắt đầu phân tích cú pháp cho số lượng lớn các trang (giả sử là toàn bộ trang web), thì quá trình này có thể mất nhiều thời gian. Trên một trang như Nettuts+, có hơn 86 trang, quá trình phân tích cú pháp có thể mất hơn một phút.

Bài học này mở ra chủ đề cho bạn Phân tích cú pháp HTML. Có các kỹ thuật thao tác DOM khác cho phép bạn làm việc với bộ chọn xpath để tìm các phần tử. Diễn tả cái bài học này Thư viện rất dễ sử dụng và tuyệt vời cho bắt đầu nhanh. Hãy nhớ xin phép trước khi cạo một trang web.