Maison  >  Article  >  développement back-end  >  Expressions régulières PHP : comment faire correspondre toutes les listes en HTML

Expressions régulières PHP : comment faire correspondre toutes les listes en HTML

王林
王林original
2023-06-22 21:21:471536parcourir

En développement web, il est très courant d'afficher du contenu dans des listes. Lors du traitement et de l'analyse de fichiers HTML, des expressions régulières peuvent être utilisées pour faire correspondre plus facilement le contenu correspondant. Cet article explique comment faire correspondre toutes les listes HTML à l'aide d'expressions régulières PHP.

  1. Acquisition de texte de page Web
    Avant de traiter la liste HTML, vous devez d'abord obtenir le contenu textuel du fichier HTML. Vous pouvez utiliser la fonction file_get_contents de PHP pour obtenir l'intégralité du contenu texte du fichier HTML. Le code est le suivant :
$html = file_get_contents('example.html');
  1. Match unordered list
    Le premier est. la liste non ordonnée. Les listes non ordonnées sont implémentées via les balises ul et li. La balise ul est utilisée pour représenter la liste entière et la balise li représente chaque élément de la liste. Nous pouvons utiliser l'expression régulière de ff6d136ddc5fdfeffaf53ff6ee95f185(.*?)929d1f5ca49e04fdcb27f9465b944689 pour faire correspondre toutes les listes non ordonnées. Parmi eux, ? signifie que cette correspondance n'est pas gourmande et que le contenu correspondant sera sélectionné aussi petit que possible, de sorte que plusieurs listes ne seront pas connectées ensemble pour une correspondance par lots. Le code complet est le suivant : ff6d136ddc5fdfeffaf53ff6ee95f185(.*?)929d1f5ca49e04fdcb27f9465b944689 的正则表达式来匹配所有无序列表。其中,?表示这个匹配是非贪婪的,匹配到的内容将被尽量小地挑选出来,这样就不会将多个列表连在一起批量匹配了。完整代码如下:
preg_match_all('/<ul>(.*?)</ul>/s', $html, $matches);

foreach ($matches[0] as $key => $value) {
    echo $key . ': ' . $value . '<br>';
}

以上代码中,preg_match_all 函数可以进行多次匹配,并将匹配结果保存到 $matches 中。而 /s 则表示 . 匹配包括换行符在内的所有字符。最后使用 foreach 遍历输出匹配的结果。

  1. 匹配有序列表
    有序列表通过ol和li标签实现。ol标签用于表示有序列表,而li表示其中的每一项。正则表达式和以上的无序列表匹配方法基本上相同,匹配有序列表的正则表达式是:
preg_match_all('/<ol>(.*?)</ol>/s', $html, $matches);

foreach ($matches[0] as $key => $value) {
    echo $key . ': ' . $value . '<br>';
}

同样地,可以使用 preg_match_all 函数进行匹配,并使用 foreach 输出结果。

  1. 匹配自定义列表
    自定义列表通过dl、dt和dd标签实现。dl 标签用于表示定义列表,dt 标签用于表示自定义项目的名称,而 dd 标签则用于表示自定义项目的描述。正则表达式如下:
preg_match_all('/<dl>(.*?)</dl>/s', $html, $matches);

foreach ($matches[0] as $key => $value) {
    echo $key . ': ' . $value . '<br>';
}

同样地,使用 preg_match_all 函数进行匹配,并使用 foreach 输出结果即可。

  1. 匹配所有列表
    以上三种列表的匹配方法虽然不同,但是正则表达式都非常类似。如果需要匹配 HTML 中的所有列表,可以使用一个简单的正则表达式。

匹配所有列表的正则表达式为:/04585a9939123efd3b029e4061973694(.*?)2f93380ee9d9196dac17b821a744d509/s

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

foreach ($matches[0] as $key => $value) {
    echo $key . ': ' . $value . '<br>';
}

Dans le code ci-dessus, la fonction preg_match_all peut effectuer plusieurs correspondances et enregistrer les résultats correspondants dans $matches. Et /s signifie que . correspond à tous les caractères, y compris les nouvelles lignes. Enfin, utilisez foreach pour parcourir et afficher les résultats correspondants.

    Match ordonnée à la liste

    La liste ordonnée est implémentée via les balises ol et li. La balise ol est utilisée pour représenter une liste ordonnée, tandis que li représente chaque élément qu'elle contient. Les expressions régulières sont fondamentalement les mêmes que la méthode de correspondance de liste non ordonnée ci-dessus. L'expression régulière pour faire correspondre les listes ordonnées est :


    rrreee

    De même, vous pouvez utiliser la fonction preg_match_all pour la correspondance et utiliser foreach. affiche les résultats. #🎜🎜#
      #🎜🎜# Faire correspondre la liste personnalisée #🎜🎜# Les listes personnalisées sont implémentées via les balises dl, dt et dd. La balise dl est utilisée pour représenter la liste de définitions, la balise dt est utilisée pour représenter le nom de l'élément personnalisé et la balise dd est utilisée pour représenter la description de l'élément personnalisé. L'expression régulière est la suivante : #🎜🎜##🎜🎜#rrreee#🎜🎜#De même, utilisez la fonction preg_match_all pour faire correspondre et utilisez foreach pour afficher le résultat. #🎜🎜#
        #🎜🎜#Faire correspondre toutes les listes #🎜🎜#Bien que les méthodes de correspondance des trois listes ci-dessus soient différentes, les expressions régulières sont très similaires. Si vous devez faire correspondre toutes les listes en HTML, vous pouvez utiliser une simple expression régulière. #🎜🎜##🎜🎜##🎜🎜#L'expression régulière qui correspond à toutes les listes est : /04585a9939123efd3b029e4061973694(.*?)2f93380ee9d9196dac17b821a744d509/s. #🎜🎜##🎜🎜#Parmi eux, [ou] représente le jeu de caractères, ce qui signifie correspondre à o ou u. Utilisez la fonction preg_match_all pour la correspondance, le code est le suivant : #🎜🎜#rrreee#🎜🎜#Le code ci-dessus correspondra à toutes les listes en HTML et affichera les résultats correspondants. #🎜🎜##🎜🎜#Résumé#🎜🎜#Lors du traitement de fichiers HTML, l'utilisation d'expressions régulières peut faire correspondre le contenu correspondant plus facilement et plus rapidement. Lors de la correspondance de listes HTML, vous pouvez effectuer une correspondance en fonction des balises de différents types de listes. Dans le même temps, vous pouvez également combiner les méthodes de correspondance des trois types de listes et utiliser une seule expression régulière pour faire correspondre toutes les listes, ce qui est plus pratique. #🎜🎜#

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