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
Libérer: 2023-06-23 11:12:02
original
1307 Les gens l'ont consulté

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>
Copier après la connexion
  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);
Copier après la connexion

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
Copier après la connexion

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);
Copier après la connexion

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

)
Copier après la connexion

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);
}
Copier après la connexion

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
        )

)
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal