Maison développement back-end tutoriel php Guide de la nouvelle fonctionnalité de sélection DOM de PHP

Guide de la nouvelle fonctionnalité de sélection DOM de PHP

Dec 15, 2024 pm 03:45 PM

Guide to PHP  new DOM Selector Feature

Dans le paysage en évolution rapide de PHP, chaque nouvelle version introduit des fonctionnalités qui rationalisent et modernisent les flux de travail de développement. PHP 8.4 ne fait pas exception, avec l'ajout d'une amélioration tant attendue à l'extension DOM. une nouvelle fonctionnalité a été introduite qui améliore considérablement la façon dont les développeurs interagissent avec les éléments DOM.

Dans cet article, nous examinerons en profondeur la nouvelle fonctionnalité de sélecteur DOM dans PHP 8.4, sa syntaxe, ses cas d'utilisation et comment elle simplifie le travail avec les éléments DOM.

Quoi de neuf dans PHP 8.4 ? Le sélecteur DOM

PHP 8.4 introduit une mise à jour majeure de l'extension DOM, en ajoutant une API de sélection DOM qui permet aux développeurs de sélectionner et de manipuler les éléments de manière plus intuitive et flexible.

Auparavant, les développeurs s'appuyaient sur des méthodes telles que gnetElementsByTagName(), getElementById() et querySelector(), qui étaient fonctionnelles mais verbeuses et moins intuitives. Ces méthodes nécessitaient une itération manuelle et une logique de sélection, rendant le code plus difficile à maintenir.

Avec PHP 8.4, les développeurs peuvent utiliser une syntaxe de sélecteur CSS native, similaire à JavaScript, pour une sélection d'éléments plus flexible et plus lisible. Ce changement simplifie le code, en particulier lorsqu'il s'agit de documents HTML et XML complexes ou profondément imbriqués.

Qu'est-ce que le sélecteur DOM ?

La fonctionnalité de sélection DOM introduite dans PHP 8.4 apporte une sélection d'éléments moderne basée sur CSS à l'extension PHP DOMDocument. Il imite les fonctionnalités des méthodes JavaScript querySelector() et querySelectorAll() largement utilisées, permettant aux développeurs de sélectionner des éléments dans une arborescence DOM à l'aide de sélecteurs CSS.

Ces méthodes permettent aux développeurs de sélectionner des éléments à l'aide de sélecteurs CSS complexes, rendant la manipulation du DOM beaucoup plus simple et intuitive.

Comment fonctionne le sélecteur DOM ?

Avec PHP 8.4, l'extension DOM introduit deux lignes de méthodes puissantes querySelector() et querySelectorAll() pour rendre plus facile et plus intuitive la sélection d'éléments DOM à l'aide de sélecteurs CSS, un peu comme en JavaScript.
(https://scrapfly.io/blog/css-selector-cheatsheet/)

1. querySelector()

La méthode querySelector() vous permet de sélectionner un un seul élément du DOM qui correspond au sélecteur CSS spécifié.

Syntaxe :

DOMElement querySelector(string $selector)

Copier après la connexion

Exemple :

$doc = new DOMDocument();
$doc->loadHTML('<div>



<p>This method returns the <strong>first element</strong> matching the provided CSS selector. If no element is found, it returns null.</p>

<h4>
  
  
  2. querySelectorAll()
</h4>

<p>The querySelectorAll() method allows you to select <strong>all elements</strong> matching the provided CSS selector. It returns a DOMNodeList object, which is a collection of DOM elements.</p>

<p><strong>Syntax</strong> :<br>
</p>

<pre class="brush:php;toolbar:false">DOMNodeList querySelectorAll(string $selector)

Copier après la connexion

Exemple :

$doc = new DOMDocument();
$doc->loadHTML('<div>



<p>This method returns a DOMNodeList containing all elements matching the given CSS selector. If no elements are found, it returns an empty DOMNodeList.</p>

<h2>
  
  
  Key Benefits of the DOM Selector
</h2>

<p>CSS selector in PHP 8.4 brings several key advantages to developers, the new methods streamline DOM element selection, making your code cleaner, more flexible, and easier to maintain.</p>

<h3>
  
  
  1. Cleaner and More Intuitive Syntax
</h3>

<p>With the new DOM selector methods, you can now use the familiar CSS selector syntax, which is much more concise and readable. No longer do you need to write out complex loops to traverse the DOM just provide a selector, and PHP will handle the rest.</p>

<h3>
  
  
  2. Greater Flexibility
</h3>

<p>The ability to use CSS selectors means you can select elements based on attributes, pseudo-classes, and other criteria, making it easier to target specific elements in the DOM.</p>

<p>For example, you can use:</p>

<ul>
<li>.class</li>
<li>#id</li>
<li>div > p:first-child
Copier après la connexion
  • [data-attribute="value"]
  • This opens up a much more powerful and flexible way of working with HTML and XML documents.

    3. Improved Consistency with JavaScript

    For developers familiar with JavaScript, the new DOM selector methods will feel intuitive. If you’ve used querySelector() or querySelectorAll() in JavaScript, you’ll already be comfortable with their usage in PHP.

    Comparison with Older PHP DOM Methods

    To better understand the significance of these new methods, let's compare them to traditional methods available in older versions of PHP.

    Feature Old Method New DOM Selector
    Select by ID getElementById('id') querySelector('#id')
    Select by Tag Name getElementsByTagName('tag') querySelectorAll('tag')
    Select by Class Name Loop through getElementsByTagName() querySelectorAll('.class')
    Complex Selection Not possible querySelectorAll('.class > tag')
    Return Type (Single Match) DOMElement `DOMElement
    Return Type (Multiple) {% raw %}DOMNodeList (live) DOMNodeList (static)

    Practical Examples

    Let’s explore some practical examples of using the DOM selector methods in PHP 8.4. These examples will show how you can use CSS selectors to efficiently target elements by ID, class, and even nested structures within your HTML or XML documents.

    By ID

    The querySelector('#id') method selects a unique element by its id, which should be unique within the document. This simplifies targeting specific elements and improves code readability.

    $doc = new DOMDocument();
    $doc->loadHTML('<div>
    
    
    
    <p>This code selects the element with the>
    
    <h3>
      
      
      By Class
    </h3>
    
    <p>The querySelectorAll('.class') method selects all elements with a given class, making it easy to manipulate groups of elements, like buttons or list items, in one go.<br>
    </p>
    
    <pre class="brush:php;toolbar:false">$doc = new DOMDocument();
    $doc->loadHTML('<div>
    
    
    
    <p>This code selects all elements with the class item and outputs their text content. It’s ideal for working with multiple elements that share the same class name.</p>
    
    <h3>
      
      
      Nested Elements
    </h3>
    
    <p>The querySelectorAll('.parent > .child') method targets direct children of a specific parent, making it easier to work with nested structures like lists or tables.<br>
    
    
    <pre class="brush:php;toolbar:false">$doc = new DOMDocument();
    $doc->loadHTML('<ul>
    
    
    
    <p>This code selects the <li> elements that are direct children of the .list class and outputs their text content. The > combinator ensures only immediate child elements are selected, making it useful for working with nested structures.
    
    <h2>
      
      
      Example Web Scraper using Dom Selector
    </h2>
    
    <p>Here's an example PHP web scraper using the new DOM selector functionality introduced in PHP 8.4. This script extracts product data from the given product page:<br>
    </p>
    
    <pre class="brush:php;toolbar:false"><?php
    
    // Load the HTML of the product page
    $url = 'https://web-scraping.dev/product/1';
    $html = file_get_contents($url);
    
    // Create a new DOMDocument instance and load the HTML
    $doc = new DOMDocument();
    libxml_use_internal_errors(true); // Suppress warnings for malformed HTML
    $doc->loadHTML($html);
    libxml_clear_errors();
    
    // Extract product data using querySelector and querySelectorAll
    $product = [];
    
    // Extract product title
    $titleElement = $doc->querySelector('h1');
    $product['title'] = $titleElement ? $titleElement->textContent : null;
    
    // Extract product description
    $descriptionElement = $doc->querySelector('.description');
    $product['description'] = $descriptionElement ? $descriptionElement->textContent : null;
    
    // Extract product price
    $priceElement = $doc->querySelector('.price');
    $product['price'] = $priceElement ? $priceElement->textContent : null;
    
    // Extract product variants
    $variantElements = $doc->querySelectorAll('.variants option');
    $product['variants'] = [];
    if ($variantElements) {
        foreach ($variantElements as $variant) {
            $product['variants'][] = $variant->textContent;
        }
    }
    
    // Extract product image URLs
    $imageElements = $doc->querySelectorAll('.product-images img');
    $product['images'] = [];
    if ($imageElements) {
        foreach ($imageElements as $img) {
            $product['images'][] = $img->getAttribute('src');
        }
    }
    
    // Output the extracted product data
    echo json_encode($product, JSON_PRETTY_PRINT);
    
    
    Copier après la connexion

    Dynamisez-vous avec l'API Web Scraping

    Guide to PHP  new DOM Selector Feature

    ScrapFly fournit des API de web scraping, de capture d'écran et d'extraction pour la collecte de données à grande échelle.

    • Contournement de la protection anti-bot - grattez les pages Web sans les bloquer !
    • Rotation des proxys résidentiels - évitez les blocages d'adresses IP et géographiques.
    • Rendu JavaScript - grattez les pages Web dynamiques via les navigateurs cloud.
    • Automatisation complète du navigateur : contrôlez les navigateurs pour faire défiler, saisir et cliquer sur les objets.
    • Conversion de format - grattez au format HTML, JSON, texte ou Markdown.
    • SDK Python et Typescript, ainsi que intégrations d'outils Scrapy et sans code.

    Essayez GRATUITEMENT !

    En savoir plus sur Scrapfly

    Limites du sélecteur DOM PHP 8.4

    Bien que l'API du sélecteur DOM soit un outil puissant, il y a quelques limitations à garder à l'esprit :

    1. Non disponible dans les anciennes versions

    Les nouvelles méthodes de sélection DOM ne sont disponibles que dans PHP 8.4 et versions ultérieures. Les développeurs utilisant des versions antérieures devront s'appuyer sur des méthodes DOM plus anciennes telles que getElementById() et getElementsByTagName().

    2. Liste de nœuds statiques

    La méthode querySelectorAll() renvoie une DOMNodeList statique, ce qui signifie qu'elle ne reflète pas les modifications apportées au DOM après la sélection initiale. Cela diffère de la NodeList en direct de JavaScript.

    3. Prise en charge limitée des pseudo-classes

    Bien que les sélecteurs CSS de base soient pris en charge, les pseudo-classes avancées (par exemple, :nth-child(), :nth-of-type()) peuvent avoir une prise en charge limitée, voire inexistante, en PHP.

    4. Performances sur les documents volumineux

    L'utilisation de sélecteurs CSS complexes sur de très gros documents peut entraîner des problèmes de performances, surtout si l'arborescence DOM est profondément imbriquée.

    FAQ

    Pour conclure ce guide, voici les réponses à quelques questions fréquemment posées sur le nouveau sélecteur DOM de PHP 8.4.

    Quelles sont les nouveautés majeures de PHP 8.4 ?

    PHP 8.4 introduit les méthodes de sélection DOM (querySelector() et querySelectorAll()), permettant aux développeurs de sélectionner des éléments DOM à l'aide de sélecteurs CSS, rendant la manipulation DOM plus intuitive et efficace.

    Quelles modifications ont été apportées dans PHP 8.4 à la manipulation du DOM qui n'étaient pas disponibles dans les versions précédentes ?

    Dans PHP 8.4, les développeurs peuvent désormais utiliser les sélecteurs CSS directement pour sélectionner des éléments DOM, grâce à l'introduction de querySelector() et querySelectorAll(). Cela n'était pas possible dans les versions antérieures de PHP, où des méthodes comme getElementsByTagName() nécessitaient plus d'itérations manuelles et étaient moins flexibles.

    PHP 8.4 prend-il en charge tous les sélecteurs CSS dans « querySelector() » et « querySelectorAll() » ?

    PHP 8.4 prend en charge un large éventail de sélecteurs CSS, mais il existe certaines limitations. Par exemple, les pseudo-classes comme :nth-child() et :not() peuvent ne pas être entièrement prises en charge ou avoir des fonctionnalités limitées.

    Résumé

    L'introduction par PHP 8.4 de l'API du sélecteur DOM simplifie l'utilisation des documents DOM en fournissant des méthodes de sélection intuitives basées sur CSS. Les nouvelles méthodes querySelector() et querySelectorAll() permettent aux développeurs de cibler facilement les éléments DOM à l'aide de sélecteurs CSS, rendant le code plus concis et maintenable.

    Même s'il existe certaines limites, les avantages de ces nouvelles méthodes dépassent de loin les inconvénients. Si vous travaillez avec PHP 8.4 ou version ultérieure, cela vaut la peine d'adopter cette fonctionnalité pour rationaliser vos tâches de manipulation DOM.

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration de ce site Web
    Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

    Outils d'IA chauds

    Undresser.AI Undress

    Undresser.AI Undress

    Application basée sur l'IA pour créer des photos de nu réalistes

    AI Clothes Remover

    AI Clothes Remover

    Outil d'IA en ligne pour supprimer les vêtements des photos.

    Undress AI Tool

    Undress AI Tool

    Images de déshabillage gratuites

    Clothoff.io

    Clothoff.io

    Dissolvant de vêtements AI

    Video Face Swap

    Video Face Swap

    Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

    Article chaud

    <🎜>: Bubble Gum Simulator Infinity - Comment obtenir et utiliser les clés royales
    4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
    <🎜>: Grow A Garden - Guide de mutation complet
    3 Il y a quelques semaines By DDD
    Nordhold: Système de fusion, expliqué
    4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
    Mandragora: Whispers of the Witch Tree - Comment déverrouiller le grappin
    3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

    Outils chauds

    Bloc-notes++7.3.1

    Bloc-notes++7.3.1

    Éditeur de code facile à utiliser et gratuit

    SublimeText3 version chinoise

    SublimeText3 version chinoise

    Version chinoise, très simple à utiliser

    Envoyer Studio 13.0.1

    Envoyer Studio 13.0.1

    Puissant environnement de développement intégré PHP

    Dreamweaver CS6

    Dreamweaver CS6

    Outils de développement Web visuel

    SublimeText3 version Mac

    SublimeText3 version Mac

    Logiciel d'édition de code au niveau de Dieu (SublimeText3)

    Sujets chauds

    Tutoriel Java
    1671
    14
    Tutoriel PHP
    1276
    29
    Tutoriel C#
    1256
    24
    Expliquez le hachage de mot de passe sécurisé dans PHP (par exemple, Password_Hash, Password_verify). Pourquoi ne pas utiliser MD5 ou SHA1? Expliquez le hachage de mot de passe sécurisé dans PHP (par exemple, Password_Hash, Password_verify). Pourquoi ne pas utiliser MD5 ou SHA1? Apr 17, 2025 am 12:06 AM

    Dans PHP, Password_Hash et Password_verify Les fonctions doivent être utilisées pour implémenter le hachage de mot de passe sécurisé, et MD5 ou SHA1 ne doit pas être utilisé. 1) Password_hash génère un hachage contenant des valeurs de sel pour améliorer la sécurité. 2) Password_verify Vérifiez le mot de passe et assurez-vous la sécurité en comparant les valeurs de hachage. 3) MD5 et SHA1 sont vulnérables et manquent de valeurs de sel, et ne conviennent pas à la sécurité de mot de passe moderne.

    PHP et Python: comparaison de deux langages de programmation populaires PHP et Python: comparaison de deux langages de programmation populaires Apr 14, 2025 am 12:13 AM

    PHP et Python ont chacun leurs propres avantages et choisissent en fonction des exigences du projet. 1.Php convient au développement Web, en particulier pour le développement rapide et la maintenance des sites Web. 2. Python convient à la science des données, à l'apprentissage automatique et à l'intelligence artificielle, avec syntaxe concise et adaptée aux débutants.

    PHP en action: Exemples et applications du monde réel PHP en action: Exemples et applications du monde réel Apr 14, 2025 am 12:19 AM

    PHP est largement utilisé dans le commerce électronique, les systèmes de gestion de contenu et le développement d'API. 1) E-commerce: Utilisé pour la fonction de panier et le traitement des paiements. 2) Système de gestion du contenu: utilisé pour la génération de contenu dynamique et la gestion des utilisateurs. 3) Développement des API: Utilisé pour le développement de l'API RESTful et la sécurité de l'API. Grâce à l'optimisation des performances et aux meilleures pratiques, l'efficacité et la maintenabilité des applications PHP sont améliorées.

    Comment fonctionne la résistance au type PHP, y compris les types scalaires, les types de retour, les types d'union et les types nullables? Comment fonctionne la résistance au type PHP, y compris les types scalaires, les types de retour, les types d'union et les types nullables? Apr 17, 2025 am 12:25 AM

    Le type PHP invite à améliorer la qualité et la lisibilité du code. 1) Conseils de type scalaire: Depuis PHP7.0, les types de données de base sont autorisés à être spécifiés dans les paramètres de fonction, tels que INT, Float, etc. 2) Invite de type de retour: Assurez la cohérence du type de valeur de retour de fonction. 3) Invite de type d'union: Depuis PHP8.0, plusieurs types peuvent être spécifiés dans les paramètres de fonction ou les valeurs de retour. 4) Invite de type nullable: permet d'inclure des valeurs nulles et de gérer les fonctions qui peuvent renvoyer les valeurs nulles.

    La pertinence durable de PHP: est-elle toujours vivante? La pertinence durable de PHP: est-elle toujours vivante? Apr 14, 2025 am 12:12 AM

    PHP est toujours dynamique et occupe toujours une position importante dans le domaine de la programmation moderne. 1) La simplicité de PHP et le soutien communautaire puissant le rendent largement utilisé dans le développement Web; 2) sa flexibilité et sa stabilité le rendent exceptionnelle dans la gestion des formulaires Web, des opérations de base de données et du traitement de fichiers; 3) PHP évolue et optimise constamment, adapté aux débutants et aux développeurs expérimentés.

    PHP et Python: différents paradigmes expliqués PHP et Python: différents paradigmes expliqués Apr 18, 2025 am 12:26 AM

    PHP est principalement la programmation procédurale, mais prend également en charge la programmation orientée objet (POO); Python prend en charge une variété de paradigmes, y compris la POO, la programmation fonctionnelle et procédurale. PHP convient au développement Web, et Python convient à une variété d'applications telles que l'analyse des données et l'apprentissage automatique.

    Comment empêchez-vous l'injection SQL en PHP? (Déclarations préparées, APD) Comment empêchez-vous l'injection SQL en PHP? (Déclarations préparées, APD) Apr 15, 2025 am 12:15 AM

    L'utilisation de déclarations de prétraitement et l'APD dans PHP peut effectivement empêcher les attaques d'injection SQL. 1) Utilisez PDO pour vous connecter à la base de données et définir le mode d'erreur. 2) Créez des instructions de prétraitement via la méthode de préparation et transmettez des données à l'aide des espaces réservés et exécutez des méthodes. 3) Traitez les résultats de la requête et assurez la sécurité et les performances du code.

    PHP et Python: exemples de code et comparaison PHP et Python: exemples de code et comparaison Apr 15, 2025 am 12:07 AM

    PHP et Python ont leurs propres avantages et inconvénients, et le choix dépend des besoins du projet et des préférences personnelles. 1.Php convient au développement rapide et à la maintenance des applications Web à grande échelle. 2. Python domine le domaine de la science des données et de l'apprentissage automatique.

    See all articles