Maison >développement back-end >tutoriel php >Expression régulière PHP : comment faire correspondre tous les menus déroulants en HTML

Expression régulière PHP : comment faire correspondre tous les menus déroulants en HTML

PHPz
PHPzoriginal
2023-06-23 09:40:431335parcourir

Dans le développement Web, le menu déroulant est un type de contrôle courant. Dans certains cas, nous devons faire correspondre tous les éléments du menu déroulant en HTML avec des expressions régulières PHP, comme dans le cas des robots d'exploration ou du grattage de données. Cet article vous montrera comment utiliser les expressions régulières PHP pour faire correspondre tous les menus déroulants en HTML.

  1. Tout d'abord, nous devons comprendre la structure HTML du contrôle du menu déroulant. Un menu déroulant se compose généralement d'une balise de sélection et d'un nombre quelconque de balises d'option. Par exemple, la structure HTML d'un simple menu déroulant est la suivante :
<select>
  <option value="1">选项1</option>
  <option value="2">选项2</option>
  <option value="3">选项3</option>
</select>
  1. Ensuite, nous pouvons utiliser la fonction d'expression régulière de PHP preg_match_all() pour faire correspondre tous les menus déroulants. élément de menu. La syntaxe de cette fonction est la suivante :
preg_match_all(pattern, subject, matches);

où pattern représente une expression régulière, subject est la chaîne à rechercher et matches est le tableau de résultats correspondant.

  1. Pour le contrôle du menu déroulant, nous pouvons utiliser l'expression régulière suivante pour correspondre à sa structure HTML :
/<select[^>]*>(.*?)</select>/s

Cette expression régulière peut match Toutes les balises de sélection, y compris les balises d'option. Parmi eux, représente la limite du mot, 1 représente zéro ou plusieurs caractères non "> ", (.?) Indique tout en mode non gourmand, s signifie laisser "." correspondre à tous les caractères, y compris les nouvelles lignes.

Ce qui suit est un exemple de code complet :

$html = '
         ';

preg_match_all('/<select[^>]*>(.*?)</select>/s', $html, $matches);

print_r($matches);

Exécutez le code ci-dessus et affichez les résultats suivants :

Array
(
    [0] => Array
        (
            [0] => <select>
            <option value="1">选项1</option>
            <option value="2">选项2</option>
            <option value="3">选项3</option>
         </select>
            [1] => <select>
            <option value="4">选项4</option>
            <option value="5">选项5</option>
            <option value="6">选项6</option>
         </select>
        )

    [1] => Array
        (
            [0] => 
            <option value="1">选项1</option>
            <option value="2">选项2</option>
            <option value="3">选项3</option>
         )
            [1] => 
            <option value="4">选项4</option>
            <option value="5">选项5</option>
            <option value="6">选项6</option>
         )
        )

)

Le tableau de résultats contient deux éléments , correspondant aux codes HTML des deux menus déroulants. S'il y a plus de menus déroulants sur la page, ils seront également mis en correspondance et enregistrés dans le tableau des résultats.

  1. Dans les applications pratiques, nous pouvons également avoir besoin d'utiliser des expressions régulières pour extraire la valeur et le texte de chaque option dans le menu déroulant. Par exemple, le code suivant peut extraire toutes les options du tableau de résultats :
foreach ($matches[1] as $select) {
    preg_match_all('/<option value="(.*?)">(.*?)</option>/s', $select, $options);
    print_r($options);
}

Le résultat de sortie est le suivant :

Array
(
    [0] => Array
        (
            [0] => <option value="1">选项1</option>
            [1] => <option value="2">选项2</option>
            [2] => <option value="3">选项3</option>
        )

    [1] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )

    [2] => Array
        (
            [0] => 选项1
            [1] => 选项2
            [2] => 选项3
        )

)

Notez que dans le texte normal ci-dessus L'expression "(.*?)" correspond respectivement à la valeur et au texte de l'option. Si vous devez extraire d'autres attributs, tels que le style ou l'ID de l'option, vous pouvez également ajouter le modèle correspondant dans l'expression régulière.


  1. >

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:
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