1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
<?php
function affichage($resultat_quath_query) {
echo "<br>";
print_r($resultat_quath_query);
echo "<br>";
foreach ($resultat_quath_query as $element) {
echo "[". $element->nodeName. "]";
$nodes = $element->childNodes;
foreach ($nodes as $node) {
echo $node->nodeValue. "<br>";
}
}
echo "<hr>";
}
$html = '<html>
<body>
<a href="/lien1.html" class="lien_en_gras">premier lien</a>
<div class="maclasse">
<a href="/page2.html" class="lien_souligne">second lien</a>
<p>
Ceci est du texte<br>
<a href="/page3.php" id="toto" class="lien_en_gras">troisieme lien</a>
</p>
</div>
</body>
</html>';
$doc = new DOMDocument();
$doc->loadHTML($html);
/*
libxml_use_internal_errors(true); // pour eviter les warning avec du html non valide
$doc->loadHTMLFile('http://www.developpez.com'); // solution de pauvre - faut utiliser curl
*/
$xpath = new DOMXpath($doc);
echo "les ancres de tous les liens<br>";
$xpath_liens = $xpath->query("//a");
affichage($xpath_liens);
echo "les attributs href de tous les liens<br>";
$xpath_ancre = $xpath->query("//a/@href");
affichage($xpath_ancre);
echo "les attributs href de tous les liens qui ont un attribut id<br>";
$xpath_ancre = $xpath->query("//a[@id]/@href");
affichage($xpath_ancre);
echo "les attributs href de tous les liens qui ont une attribut class qui vaut lien_en_gras<br>";
$xpath_ancre = $xpath->query("//a[contains(@class,'lien_en_gras')]/@href");
affichage($xpath_ancre);
echo "tous les élements qui ont une attribut class qui commence par lien<br>";
$xpath_ancre = $xpath->query("//a[starts-with(@class,'lien')]/@href");
affichage($xpath_ancre);
echo "les attributs href de tous les liens après un div<br>";
$xpath_liens_div = $xpath->query("//div/a/@href");
affichage($xpath_liens_div);
echo "les attributs href de tous les liens dans un div<br>";
$xpath_liens_div = $xpath->query("//div//a/@href");
affichage($xpath_liens_div);
echo "les attributs class de toutes les div<br>";
$xpath_liens_div = $xpath->query("//div/@class");
affichage($xpath_liens_div);
echo "les attributs class de toutes les div et tous les a. parenthèses et | pour mettre 2 sélecteurs<br>";
$xpath_liens_div = $xpath->query("(//div|//a)/@class");
affichage($xpath_liens_div); |
Partager