I. DOM là gì?
DOM (Document Object Model) – tạm dịch: mô hình đối tượng của tài liệu: nói rõ hơn là W3C DOM, là 1 dạng chuẩn của W3C đưa ra nhằm để truy xuất và thao tác dữ liệu của tài liệu có cấu trúc (vd như: HTML, XML), và mô hình này thể hiện tài liệu(document) dưới dạng cấu trúc cây phân cấp.
Nó còn được phân làm 3 nhánh nhỏ nữa:
- Core DOM: dạng chuẩn để thao tác và truy xuất tài liệu có cấu trúc.
- HTML DOM: dạng chuẩn để thao tác và truy xuất tài liệu HTML.
- XML DOM: dạng chuẩn để thao tác và truy xuất tài liệu XML.
Ngoài ra, DOM còn định nghĩa các đối tượng, phương thức và thuộc tính để chúng ta có thể truy xuất và thao tác từng phần tử của tài liệu (như XML, HTML).
II. HTML DOM
HTML DOM viết tắt của Document Object Model for HTML
HTML DOM định nghĩa tập các đối tượng chuẩn cho HTML, và cách tiêu chuẩn truy xuất và xử lý tài liệu HTML
HTML DOM xem tài liệu HTML như một cấu trúc dạng cây của các thành phần (element) nhúng trong các thành phần khác. Các thành phần chứa văn bản và các thuộc tính có thể truy xuất qua DOM tree. Nội dung của nó có thể xóa hoặc thay đổi, và thành phần mới có thể tạo bằng DOM. Các thành phần, văn bản của nó, và các thuộc tính được gọi là nút (node).
III. Sử dụng HTML DOM
Trước khi sử dụng, phải download thư viện HTML DOM.
Download:
Mediafire hoặc vupham999@gmail.com, vuphamluutru999@gmail.com
Sau khi download xong, muốn sử dụng ta phải require file simple_html_dom.php vào project của mình
1. Quick start
a. Get HTML elements
// Create DOM from URL or file
$html = file_get_html('http://www.google.com/');
// Find all images
foreach($html->find('img') as $element)
echo $element->src . '<br>';
// Find all links
foreach($html->find('a') as $element)
echo $element->href . '<br>';
b. Modify HTML DOM
// Create DOM from string
$html = str_get_html('<div id="hello">Hello</div><div id="world">World</div>');
$html->find('div', 1)->class = 'bar';
$html->find('div[id=hello]', 0)->innertext = 'foo';
echo $html; // Output: <div id="hello">foo</div><div id="world" class="bar">World</div>
2. How to create HTML DOM object?
// Create a DOM object from a string
$html = str_get_html('<html><body>Hello!</body></html>');
// Create a DOM object from a URL
$html = file_get_html('http://www.google.com/');
// Create a DOM object from a HTML file
$html = file_get_html('test.htm');
3. How to find HTML elements?
a. Basics
// Find all anchors, returns a array of element objects
$ret = $html->find('a');
// Find (N)th anchor, returns element object or null if not found (zero based)
$ret = $html->find('a', 0);
// Find lastest anchor, returns element object or null if not found (zero based)
$ret = $html->find('a', -1);
// Find all <div> with the id attribute
$ret = $html->find('div[id]');
// Find all <div> which attribute id=foo
$ret = $html->find('div[id=foo]');
b. Advanced
// Find all element which id=foo
$ret = $html->find('#foo');
// Find all element which class=foo
$ret = $html->find('.foo');
// Find all element has attribute id
$ret = $html->find('*[id]');
// Find all anchors and images
$ret = $html->find('a, img');
// Find all anchors and images with the "title" attribute
$ret = $html->find('a[title], img[title]');
c. Descendant selector (lựa chọn dựa trên quan hệ con cháu)
// Find all <li> in <ul>
$es = $html->find('ul li');
// Find Nested <div> tags
$es = $html->find('div div div');
// Find all <td> in <table> which class="hello"
$es = $html->find('table.hello td');
// Find all td tags with attribite align=center in table tags
$es = $html->find(''table td[align=center]');
// Find all <li> in <ul>
foreach($html->find('ul') as $ul)
{
foreach($ul->find('li') as $li)
{
// do something...
}
}
// Find first <li> in first <ul>
$e = $html->find('ul', 0)->find('li', 0);
4. How to access the HTML element's attributes?
a. Get, Set, and Remove Attributes
// Get a attribute ( If the attribute is non-value attribute (eg. checked, selected...), it will returns true or false)
$value = $e->href;
// Set a attribute(If the attribute is non-value attribute (eg. checked, selected...), set it's value as true or false)
$e->href = 'my link';
// Remove a attribute, set it's value as null!
$e->href = null;
// Determine whether a attribute exist?
if(isset($e->href))
echo 'href exist!';
b. Magic Attributes
// Example
$html = str_get_html("<div>foo <b>bar</b></div>");
$e = $html->find("div", 0);
echo $e->tag; // Returns: " div"
echo $e->outertext; // Returns: " <div>foo <b>bar</b></div>"
echo $e->innertext; // Returns: " foo <b>bar</b>"
echo $e->plaintext; // Returns: " foo bar"
c. Tips
// Extract contents from HTML
echo $html->plaintext;
// Wrap a element
$e->outertext = '<div class="wrap">' . $e->outertext . '<div>';
// Remove a element, set it's outertext as an empty string
$e->outertext = '';
// Append a element
$e->outertext = $e->outertext . '<div>foo<div>';
// Insert a element
$e->outertext = '<div>foo<div>' . $e->outertext;
5. How to traverse the DOM tree?
// Example
echo $html->find("#div1", 0)->children(1)->children(1)->children(2)->id;
// or
echo $html->getElementById("div1")->childNodes(1)->childNodes(1)->childNodes(2)->getAttribute('id');
6. Callback functions
// Write a function with parameter "$element"
function my_callback($element) {
// Hide all <b> tags
if ($element->tag=='b')
$element->outertext = '';
}
// Register the callback function with it's function name
$html->set_callback('my_callback');
// Callback function will be invoked while dumping
echo $html;
DOM (Document Object Model) – tạm dịch: mô hình đối tượng của tài liệu: nói rõ hơn là W3C DOM, là 1 dạng chuẩn của W3C đưa ra nhằm để truy xuất và thao tác dữ liệu của tài liệu có cấu trúc (vd như: HTML, XML), và mô hình này thể hiện tài liệu(document) dưới dạng cấu trúc cây phân cấp.
Nó còn được phân làm 3 nhánh nhỏ nữa:
- Core DOM: dạng chuẩn để thao tác và truy xuất tài liệu có cấu trúc.
- HTML DOM: dạng chuẩn để thao tác và truy xuất tài liệu HTML.
- XML DOM: dạng chuẩn để thao tác và truy xuất tài liệu XML.
Ngoài ra, DOM còn định nghĩa các đối tượng, phương thức và thuộc tính để chúng ta có thể truy xuất và thao tác từng phần tử của tài liệu (như XML, HTML).
II. HTML DOM
HTML DOM viết tắt của Document Object Model for HTML
HTML DOM định nghĩa tập các đối tượng chuẩn cho HTML, và cách tiêu chuẩn truy xuất và xử lý tài liệu HTML
HTML DOM xem tài liệu HTML như một cấu trúc dạng cây của các thành phần (element) nhúng trong các thành phần khác. Các thành phần chứa văn bản và các thuộc tính có thể truy xuất qua DOM tree. Nội dung của nó có thể xóa hoặc thay đổi, và thành phần mới có thể tạo bằng DOM. Các thành phần, văn bản của nó, và các thuộc tính được gọi là nút (node).
III. Sử dụng HTML DOM
Trước khi sử dụng, phải download thư viện HTML DOM.
Download:
Mediafire hoặc vupham999@gmail.com, vuphamluutru999@gmail.com
Sau khi download xong, muốn sử dụng ta phải require file simple_html_dom.php vào project của mình
1. Quick start
a. Get HTML elements
// Create DOM from URL or file
$html = file_get_html('http://www.google.com/');
// Find all images
foreach($html->find('img') as $element)
echo $element->src . '<br>';
// Find all links
foreach($html->find('a') as $element)
echo $element->href . '<br>';
b. Modify HTML DOM
// Create DOM from string
$html = str_get_html('<div id="hello">Hello</div><div id="world">World</div>');
$html->find('div', 1)->class = 'bar';
$html->find('div[id=hello]', 0)->innertext = 'foo';
echo $html; // Output: <div id="hello">foo</div><div id="world" class="bar">World</div>
2. How to create HTML DOM object?
// Create a DOM object from a string
$html = str_get_html('<html><body>Hello!</body></html>');
// Create a DOM object from a URL
$html = file_get_html('http://www.google.com/');
// Create a DOM object from a HTML file
$html = file_get_html('test.htm');
3. How to find HTML elements?
a. Basics
// Find all anchors, returns a array of element objects
$ret = $html->find('a');
// Find (N)th anchor, returns element object or null if not found (zero based)
$ret = $html->find('a', 0);
// Find lastest anchor, returns element object or null if not found (zero based)
$ret = $html->find('a', -1);
// Find all <div> with the id attribute
$ret = $html->find('div[id]');
// Find all <div> which attribute id=foo
$ret = $html->find('div[id=foo]');
b. Advanced
// Find all element which id=foo
$ret = $html->find('#foo');
// Find all element which class=foo
$ret = $html->find('.foo');
// Find all element has attribute id
$ret = $html->find('*[id]');
// Find all anchors and images
$ret = $html->find('a, img');
// Find all anchors and images with the "title" attribute
$ret = $html->find('a[title], img[title]');
c. Descendant selector (lựa chọn dựa trên quan hệ con cháu)
// Find all <li> in <ul>
$es = $html->find('ul li');
// Find Nested <div> tags
$es = $html->find('div div div');
// Find all <td> in <table> which class="hello"
$es = $html->find('table.hello td');
// Find all td tags with attribite align=center in table tags
$es = $html->find(''table td[align=center]');
// Find all <li> in <ul>
foreach($html->find('ul') as $ul)
{
foreach($ul->find('li') as $li)
{
// do something...
}
}
// Find first <li> in first <ul>
$e = $html->find('ul', 0)->find('li', 0);
4. How to access the HTML element's attributes?
a. Get, Set, and Remove Attributes
// Get a attribute ( If the attribute is non-value attribute (eg. checked, selected...), it will returns true or false)
$value = $e->href;
// Set a attribute(If the attribute is non-value attribute (eg. checked, selected...), set it's value as true or false)
$e->href = 'my link';
// Remove a attribute, set it's value as null!
$e->href = null;
// Determine whether a attribute exist?
if(isset($e->href))
echo 'href exist!';
b. Magic Attributes
// Example
$html = str_get_html("<div>foo <b>bar</b></div>");
$e = $html->find("div", 0);
echo $e->tag; // Returns: " div"
echo $e->outertext; // Returns: " <div>foo <b>bar</b></div>"
echo $e->innertext; // Returns: " foo <b>bar</b>"
echo $e->plaintext; // Returns: " foo bar"
Attribute Name | Usage |
---|---|
$e->tag | Read or write the tag name of element. |
$e->outertext | Read or write the outer HTML text of element. |
$e->innertext | Read or write the inner HTML text of element. |
$e->plaintext | Read or write the plain text of element. |
c. Tips
// Extract contents from HTML
echo $html->plaintext;
// Wrap a element
$e->outertext = '<div class="wrap">' . $e->outertext . '<div>';
// Remove a element, set it's outertext as an empty string
$e->outertext = '';
// Append a element
$e->outertext = $e->outertext . '<div>foo<div>';
// Insert a element
$e->outertext = '<div>foo<div>' . $e->outertext;
5. How to traverse the DOM tree?
// Example
echo $html->find("#div1", 0)->children(1)->children(1)->children(2)->id;
// or
echo $html->getElementById("div1")->childNodes(1)->childNodes(1)->childNodes(2)->getAttribute('id');
6. Callback functions
// Write a function with parameter "$element"
function my_callback($element) {
// Hide all <b> tags
if ($element->tag=='b')
$element->outertext = '';
}
// Register the callback function with it's function name
$html->set_callback('my_callback');
// Callback function will be invoked while dumping
echo $html;
Nguồn: Sưu tầm Internet
Không có nhận xét nào:
Đăng nhận xét