getElementsByTagName()

getElementById si getElementsByTagName sunt metode ale clasei PHP DOMDocument . Aceste metode pot fi utilizate in PHP pentru a lucra cu elemente /tag-uri HTML.
- Inainte de a utiliza metodele clasei PHP DOMDocument, trebuie sa incarcati documentul HTML intr-un obiect DOMDocument, precum in acest cod:

// creaza obiectul DOMDocument
$dochtml = new DOMDocument();

// incarca continutul dintr-o pagina (sau fisier) HTML
$dochtml->loadHTMLFile('filename.html');

// SAU, incarca elementele HTML stocate intr-un sir
$strhtml = '<html><body>Tag-uri si continut.<br></body></html>';
$dochtml->loadHTML($strhtml);

- Variabila $dochtml contine un obiect in care sunt toate elementele din documentul HTML, intr-o structura ierarhica. Dupa ce e definit acest obiect, se pot aplica la el metodele clasei DOMDocument ca sa accesati elementele HTML (dupa cum puteti vedea in exemplele urmatoare).
- Este indicat sa aveti codul HTML corect format, altfel va genera erori E_WARNING daca sunt gasite tag-uri sau atribute neinchise.

Pentru a traversa un obiect PHP, se foloseste instructiunea foreach().

getElementById

Functia getElementById('ID') returneaza un obiect ce contine elementul cu ID-ul specificat, sau NULL daca elementul nu e gasit.
Aceasta functie este utila cand doriti sa preluati continutul, sau atributele dintr-un element HTML cu un anumit ID.
    - Proprietatea nodeValue se poate folosi pt a obtine continutul elementului returnat de getElementById().
    - Proprietatea tagName (sau nodeName) se poate folosi pt a obtine numele tag-ului.

Exemplu, preia numele tag-ului si continutul unui element cu un anumit ID:
<?php
$strhtml = '<!doctype html>
<html>
<head>
 <meta charset="utf-8" />
 <title>PHP getElementById, getElementsByTagName</title>
</head>
<body>
 <div id="dv1">www.MarPlo.net</div>
</body></html>';

// creaza obiectul DOMDocument si incarca HTML dintr-un sir
$dochtml = new DOMDocument();
$dochtml->loadHTML($strhtml);

// preia elementul cu id="dv1"
$elm = $dochtml->getElementById('dv1');

// preia numele tag-ului si continutul
$tag = $elm->tagName;
$cnt = $elm->nodeValue;

echo $tag. ' - '. $cnt;           // div - www.MarPlo.net
?>

getElementsByTagName

Functia getElementsByTagName('tag') returneaza un obiect cu toate elementele cu acelasi nume de "tag". Argumentul special '*' preia toate tag-urile.
Aceasta functie este utila cand doriti sa preluati continutul, sau atributele mai multor elemente HTML cu acelasi <tag>.
    - Metoda getAttribute('atribut') se foloseste pt a obtine valoarea unui anumit atribut.

Exemplu, preia si afiseaza ID-ul si continutul fiecarui DIV:
<?php
$strhtml = '<!doctype html>
<html>
<head>
 <meta charset="utf-8" />
 <title>PHP getElementById, getElementsByTagName</title>
</head>
<body>
 <div id="cweb">www.CoursesWeb.net</div>
 <p>Curs gratuit PHP</p>
 <div id="mp">www.MarPlo.net</div>
</body></html>';

// creaza obiectul DOMDocument si incarca HTML dintr-un sir
$dochtml = new DOMDocument();
$dochtml->loadHTML($strhtml);

// preia toate DIV-urile
$divs = $dochtml->getElementsByTagName('div');

// parcurge obiectul cu toate DIV-urile
foreach($divs as $div) {
  // preia si afiseaza ID-ul si continutul fiecarui DIV
  $id = $div->getAttribute('id');
  $cnt = $div->nodeValue;

  echo $id. ' - '. $cnt. '<br/>';
}
?>

Rezultat:
cweb - www.CoursesWeb.net
mp - www.MarPlo.net

- Se poate folosi /incarca doar o parte din documentul HTML.
Exemplu 2. Incarca un sir ce contine doar sectiunea BODY, retine intr-un Array continutul fiecarui paragraf (<p>) cu class="cls".
<?php
$strhtml = '<body>
 <p class="cls">Curs gratuit PHP</p>
 <p class="cls">URL: http://www.coursesweb.net</p>
 <p>Paragraph without class.</p>
 <div>www.MarPlo.net</div>
 <p class="cls">PHP getElementById si getElementsByTagName</p>
</body>';

// creaza obiectul DOMDocument si incarca HTML dintr-un sir
$dochtml = new DOMDocument();
$dochtml->loadHTML($strhtml);

// preia toate tag-urile <p>
$prgs = $dochtml->getElementsByTagName('p');
$pcls = array();

// parcurge obiectul cu toate paragrafele
foreach($prgs as $prg) {
  // daca paragraful curent are class="cls", il adauga in array-ul $pcls
  if($prg->getAttribute('class') == 'cls') {
    $pcls[] = $prg->nodeValue;
  }
}

// afiseaza array-ul $pcls
print_r($pcls);

// Array ([0] => Curs gratuit PHP [1] => URL: http://www.coursesweb.net [2] => PHP getElementById si getElementsByTagName )
?>

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Care tag HTML5 adauga o aplicatie externa (SWF, PDF) in pagina web?
<mark> <embed> <canvas>
<embed src="flash_game.swf" width="450" height="350" />
Ce pseudo-element adauga un anume stil la prima linie de text din element?
:first-letter :before :first-line
#id:first-line {
  font-weight: bold;
  color: blue;
}
Clic pe proprietatea obiectului window care preia sau seteaza adresa URL a paginii curente.
window.location window.self window.status
var url = window.location;
alert(url);
Indicati functia PHP care preia continutul unui fisier sau pagina si-l adauga intr-un sir.
fopen() file_put_contents() file_get_contents()
$homepage = file_get_contents("http://www.marplo.net/");
echo $homepage;
Care din urmatoarele perechi de numere sunt in ordine unul dupa altu?
seven - eight ten - six three - five
This fruit has seven or eight seeds.
- Acest fruct are sapte sau opt seminte.
Care din urmatoarele perechi de numere sunt in ordine unul dupa altu?
diez - seis siete - ocho tres - cinco
Esta fruta tiene siete u ocho semillas.
- Acest fruct are sapte sau opt seminte.
getElementById si getElementsByTagName

Last accessed pages

  1. Grow Cube (3)
  2. Obiectul window 1 (44)
  3. Jocuri Puzzle (2679)
  4. Angkor Quest (24)
  5. Verbe reflexive 1 (220)

Popular pages this month

  1. Bubbles3 (3094)
  2. Gramatica limbii engleze - Prezentare Generala (2930)
  3. Prezentul simplu si continuu - Present Tense Simple and Continuous (2162)
  4. Butterfly Kyodai (2012)
  5. Trecutul simplu si continuu - Past Tense Simple and Continuous (1826)