136 votes

Récupérer les éléments du DOM par nom de classe

J'utilise PHP DOM et j'essaie d'obtenir un élément dans un nœud DOM qui a un nom de classe donné. Quelle est la meilleure façon d'obtenir ce sous-élément ?

Mise à jour : J'ai fini par utiliser Mechanize pour PHP qui était beaucoup plus facile à utiliser.

2 votes

4voto

Unicco Points 56

Je préfère utiliser Symfony pour cela. Leurs bibliothèques sont très intéressantes.

Utilisez le Le composant DomCrawler

Exemple :

$browser = new HttpBrowser(HttpClient::create());
$crawler = $browser->request('GET', 'example.com');
$class = $crawler->filter('.class')->first();

1voto

Panique Points 4680

La gestion native du DOM de PHP est absurdement mauvaise, faites-vous une faveur et utilisez ce paquet ou tout autre paquet moderne d'analyse HTML qui peut gérer cela en quelques lignes :

Installer paquettg/php-html-parser avec

composer require paquettg/php-html-parser

Créez ensuite un fichier .php dans le même dossier avec le contenu suivant

<?php

// load dependencies via Composer
require __DIR__ . '/vendor/autoload.php';

use PHPHtmlParser\Dom;

$dom = new Dom;
$dom->loadFromUrl("https://example.com");
$links = $dom->find('.classname a');

foreach ($links as $link) {
    echo $link->getAttribute('href');
}

P.S. Vous trouverez des informations sur l'installation de Composer à l'adresse suivante Page d'accueil du compositeur .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X