PHP getElementById si getElementsByTagName

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 )
?>

Inlantuire mai multe metode ... <<-- Anterior ----------- Urmator -->> Lucru cu atribute HTML ...

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Care tag adauga rand nou in paragraf?
<b> <br> <p>
Prima linie ...<br>
Alta linie...
Ce proprietate CSS seteaza spatiu dintre litere?
text-size word-spacing letter-spacing
#id {
  letter-spacing: 2px;
}
Ce functie obtine accesul la un element HTML cu un anumit ID?
getElementById() getElementsByTagName() createElement()
var elm = document.getElementById("theID");
var content = elm.innerHTML;
alert(content);
Clic pe instructiunea "echo" utilizata corect.
echo "CoursesWeb.net" echo "CoursesWeb.net"; echo ""CoursesWeb.net";
echo "Adresa URL: http://CoursesWeb.net";
Care din urmatoarele expresii cu "paint" (a picta) se foloseste pentru forma Negativa?
will paint not paint have painted
She does not paint that landscape.
- Ea nu picteaza acel peisaj.
Care din urmatoarele expresii cu "cantar" (a canta) se foloseste pentru propozitie Negativa?
ir a cantar cantaba no cantar
Ella no canta esa canciĆ³n.
- Ea nu canta acel cantec.
getElementById si getElementsByTagName - Tutoriale PHP