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
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 liveing
I`m living here.
- Traiesc /Locuiesc aici.
Care este forma de Gerunziu (sau Participiu Prezent) a verbului "vivir" (a trai /a locui)?
viviĆ³ vivido viviendo
Estoy viviendo aquĆ­.
- Traiesc /Locuiesc aici.
getElementById si getElementsByTagName - Tutoriale PHP