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.
<select> <option value="1">选项1</option> <option value="2">选项2</option> <option value="3">选项3</option> </select>
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.
/<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.
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.
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!