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

Expressions régulières PHP : comment faire correspondre tous les liens en HTML

王林
王林original
2023-06-22 13:15:071337parcourir

Dans le développement Web, nous devons souvent gérer des liens dans des pages HTML. Comment utiliser des expressions régulières PHP pour faire correspondre tous les liens d'une page HTML ? Découvrons-le ci-dessous.

Les liens dans les pages HTML sont généralement implémentés via la balise , et nous pouvons faire correspondre les liens en fonction de cette balise. Tout d'abord, nous devons obtenir le code source de la page HTML via la fonction file_get_contents() de PHP, par exemple :

$html = file_get_contents('http://www.example.com');

Ensuite, nous pouvons utiliser des expressions régulières pour faire correspondre tous les liens. Ce qui suit est une expression régulière simple qui correspond aux liens :

$pattern = '/<a href="https://www.php.cn/link/d28a3097fa7cf63ad01c4f328314e2f2">https://www.php.cn/link/d28a3097fa7cf63ad01c4f328314e2f2</a>/';

Dans l'expression régulière, correspond à une balise de lien qui commence par et commence par l'attribut href. href="https://www.php.cn/link/2b9bd744f7c0d06123d9d9557310fa80" correspond à l'adresse du lien. Les crochets indiquent qu'il s'agit d'un groupe de capture, ce qui signifie que nous pouvons utiliser la variable $matches pour accéder au résultat correspondant plus tard. >(.?) correspond au texte du lien et est également un groupe de capture.

Ensuite, nous pouvons utiliser la fonction preg_match_all() pour appliquer l'expression régulière au code source de la page HTML afin de faire correspondre tous les liens :

preg_match_all($pattern, $html, $matches);

La fonction renvoie un tableau $matches, où $matches[0] contient tous les correspondants. Le complet chaîne du lien, $matches[1] correspond au groupe de capture 1, qui est l'adresse du lien, et $matches[2] correspond au groupe de capture 2, qui est le texte du lien.

Enfin, nous pouvons parcourir le tableau $matches[1], qui est le tableau d'adresses de lien, pour obtenir les adresses de tous les liens :

foreach ($matches[1] as $link) {
    echo $link . "
";
}

Le code complet est le suivant :

$html = file_get_contents('http://www.example.com');
$pattern = '/<a href="https://www.php.cn/link/d28a3097fa7cf63ad01c4f328314e2f2">https://www.php.cn/link/d28a3097fa7cf63ad01c4f328314e2f2</a>/';
preg_match_all($pattern, $html, $matches);

foreach ($matches[1] as $link) {
    echo $link . "
";
}

Notez que cette expression régulière peut correspond uniquement au format de base du lien, par exemple :

<a href="http://www.example.com">Example</a>

Si le lien contient d'autres attributs ou si le format de l'étiquette ne répond pas aux exigences de base, il ne sera pas mis en correspondance. Dans les applications pratiques, l'expression régulière peut être modifiée selon les besoins pour s'adapter à différents formats de liens.

En résumé, pour utiliser des expressions régulières PHP pour faire correspondre les liens dans les pages HTML, vous pouvez utiliser la fonction file_get_contents() pour obtenir le code source de la page, puis utiliser la fonction preg_match_all() et les expressions régulières appropriées pour compléter la correspondance, et enfin parcourir les résultats correspondants, c'est-à-dire Can.

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