PHP Simple HTML DOM este un interpretor HTML DOM scris in PHP5+. Aceasta clasa permite manipularea elementelor HTML intr-un mod foaarte usor, gasire tag-uri din codul HTML cu selectori precum in jQuery.
-
PHP Simple HTML DOM 1.5.
•
Exemple
API Reference
Helper functions:
- str_get_html ( sir $content ) - Creaza obiect DOM dintr-un sir.
- file_get_html ( sir $filename ) - Creaza obiect DOM dintr-un fisier sau URL.
Metode & proprietati
DOM:
- __construct ( [sir $filename] ) - Constructor, seteaza numele fisierului ca parametru, va incarca automat continutul din fisier sau url.
- plaintext - Returneaza continutul extras din HTML.
- clear () - Elibereaza memoria.
- load ( sir $content ) - Incarca continutul dintr-un sir.
- save ( [sir $filename] ) - Pune structura DOM intr-un sir. Daca $filename e setat, sirul rezultat va fi salvat in fisier.
- load_file ( sir $filename ) - Incarca continutul dintr-un fisier sau adresa URL.
- set_callback ( sir $function_name ) - Seteaza o functie care sa fie apelata.
- find ( sir $selector [, int $index] ) - Gaseste elementele dupa selectorul CSS. Returneaza al N-lea element daca index e setat, altfel returneaza un array cu obiecte.
Metode & proprietati pt.
Element:
- [atribut] - Citeste sau scrie valoarea atributului.
- tag - Citeste sau scrie tag-ul /elementul.
- outertext - Citeste sau scrie textul exterior elementului HTML.
- innertext - Citeste sau scrie textul interior elementului HTML.
- plaintext - Citeste sau scrie textul elementului.
- find ( sir $selector [, int $index] ) - Gaseste elementul HTML. Returneaza al N-lea element daca index e setat, altfel, returneaza array cu obiecte.
Traversare
DOM:
- $e->children ( [int $index] ) - Returneaza al N-lea copil daca index e setat, altfel returneaza array cu elementele copii.
- $e->parent () - Returneaza parintele elementului.
- $e->first_child () - Returneaza primul copil al elementului, sau null daca nu e gasit.
- $e->last_child () - Returneaza ultimul copil al elementului, sau null daca nu e gasit.
- $e->next_sibling () - Returneaza urmatorul frate al elementului, sau null daca nu e gasit.
- $e->prev_sibling () - Returneaza fratele anterior, sau null daca nu e gasit.
Se pot folosi de asemenea metode cu STANDARDUL W3C.
- $e->getAllAttributes () - $e->attr
- $e->getAttribute ( $name ) - $e->attribute
- $e->setAttribute ( $name, $value ) - $value = $e->attribute
- $e->hasAttribute ( $name ) - isset($e->attribute)
- $e->removeAttribute ( $name ) - $e->attribute = null
- $e->getElementById ( $id ) - $e->find ( "#$id", 0 )
- $e->getElementsById ( $id [,$index] ) - $e->find ( "#$id" [, int $index] )
- $e->getElementByTagName ($name ) - $e->find ( $name, 0 )
- $e->getElementsByTagName ( $name [, $index] ) - $e->find ( $name [, int $index] )
- $e->parentNode () - $e->parent ()
- $e->childNodes ( [$index] ) - $e->children ( [int $index] )
- $e->firstChild () - $e->first_child ()
- $e->lastChild () - $e->last_child ()
- $e->nextSibling () - $e->next_sibling ()
- $e->previousSibling () - $e->prev_sibling ()
Exemple:
1. Gaseste toate link-urile si textul lor dintr-o pagina de la o adresa URL:
<?php
include('simplehtmldom/simple_html_dom.php');
// Creaza DOM cu continutul dintr-un fisier, sau URL
$html = file_get_html('http://www.coursesweb/');
// Gaseste toate link-urile si textul lor
foreach($html->find('a') as $elm) {
echo $elm->href .' ('.$elm->plaintext. ')<br/>';
}
?>
Rezultat:
html/ (HTML)
css/ (CSS)
javascript/ (JavaScript)
php-mysql/ (PHP-MySQL)
ajax/ (AJAX)
flash/ (Flash - ActionScript)
ex/contact (Contact)
2. Gaseste toate imaginile cu o anumita valoare la "class", dintr-un continut HTML definit in scriptul PHP:
<?php
include('simplehtmldom/simple_html_dom.php');
// Creaza obiect DOM dintr-un sir
$html = str_get_html('<div><img src="image1.jpg" alt="Img1" class="cls" /><br/>
<img src="image2.png" alt="Img2" /></div><p>Text oarecare</p>
<img src="image3.gif" alt="Img3" class="cls" />');
// Gaseste toate imaginile cu class="cls"
foreach($html->find('img.cls') as $elm) {
echo $elm->src. '<br/>';
}
?>
Rezultat:
image1.jpg
image3.gif
3. Obtine id-ul primului LI dintr-o lista UL, ii schimba textul si returneaza noul continut.
<?php
include('simplehtmldom/simple_html_dom.php');
// Creaza obiect DOM dintr-un sir
$html = str_get_html('<nav><ul>
<li id="idli1" class="cls">List 1</li><li>List 2</li><li class="cls">List 3</li>
</ul></nav>');
// Obtine id-ul primului LI dintr-o lista UL, ii schimba continutul
$idli = $html->find('li', 0)->id;
if($idli) echo 'First LI id: '. $idli;
$html->find('ul li', 0)->innertext = '<b>marplo.net/</b>';
echo $html;
?>
Rezulta acest cod HTML:
First LI id: idli1
<nav><ul>
<li id="idli1" class="cls"><b>marplo.net/</b></li>
<li>List 2</li>
<li class="cls">List 3</li>
</ul></nav>
4. Utilizarea unei functii care sa fie apelata cu elementele din DOM (aici schimba valoarea atributului class).
<?php
include('simplehtmldom/simple_html_dom.php');
// Creaza obiect DOM dintr-un HTML file
$html = file_get_html('test.htm');
// Defineste o functie cu parametru "$elm"
function changeCls($elm) {
// daca e LI cu class="cls", schimba valoarea de la "class"
if ($elm->tag=='li' && $elm->class=='cls') {
$elm->setAttribute('class', 'class_2');
}
}
$html->set_callback('changeCls');
echo $html;
?>
- In arhiva cu clasa "PHP Simple HTML DOM" veti gasi mai multe exemple si documentatie (in directorul accesat de pe server).
•
PHP Simple HTML DOM Web Site.
Un Test simplu in fiecare zi
HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Ce tag se foloseste pentru a adauga liste in elemente <ul> si <ol>?
<dt> <dd> <li><ul>
<li>http://coursesweb.net/html/</li>
<li>http://www.marplo.net/html/</li>
</ul>
Care valoare a proprietatii "display" seteaza elementul ca tip bloc si afiseaza un punct in fata?
block list-item inline-block.some_class {
display: list-item;
}
Care instructiune JavaScript transforma un obiect in sir JSON.
JSON.parse() JSON.stringify eval()var obj = {
"courses": ["php", "javascript", "ajax"]
};
var jsonstr = JSON.stringify(obj);
alert(jsonstr); // {"courses":["php","javascript","ajax"]}
Indicati clasa PHP folosita pentru a lucra cu elemente HTML si XML in PHP.
stdClass PDO DOMDocument$strhtml = '<body><div id="dv1">CoursesWeb.net</div></body>';
$dochtml = new DOMDocument();
$dochtml->loadHTML($strhtml);
$elm = $dochtml->getElementById("dv1");
echo $elm->nodeValue; // CoursesWeb.net
Indicati forma de Prezent Continuu a verbului "to live" (a trai /a locui)
lived living liveingI`m living here.
- Traiesc /Locuiesc aici.
Care este forma de Gerunziu (sau Participiu Prezent) a verbului "vivir" (a trai /a locui)?
vivió vivido viviendoEstoy viviendo aquí.
- Traiesc /Locuiesc aici.