Analyser les liens en HTML en utilisant PHP

王林
Libérer: 2023-06-14 13:10:01
original
1578 Les gens l'ont consulté

Avec le développement rapide d'Internet, le nombre et l'ampleur des sites Web continuent de croître. Afin d'améliorer l'accessibilité et l'expérience utilisateur du site Web, il est souvent nécessaire d'ajouter un grand nombre de liens vers la page Web. Pour certains sites Web nécessitant un traitement par lots, la vérification et la modification manuelle des liens sont évidemment une tâche fastidieuse et sujette aux erreurs. Par conséquent, utiliser PHP pour analyser des liens en HTML est devenu un moyen efficace et rapide.

1. Obtenez le fichier HTML

Tout d'abord, nous devons faire en sorte que le fichier HTML soit traité via PHP. PHP propose diverses manières d'obtenir des fichiers HTML, telles que l'utilisation de la fonction file_get_contents, la combinaison fopen et fread pour lire, etc. Ici, nous utilisons la fonction file_get_contents.

$filename = 'example.html';
$html = file_get_contents($filename);

2. Analyser les liens dans le fichier HTML

Après avoir obtenu le fichier HTML, nous devons extraire les liens qu'il contient avec la plus grande précision. que possible. Sur cette base, nous pouvons utiliser des expressions régulières ou l'analyseur DOM intégré à PHP.

  1. Expression régulière pour extraire des liens

Pour extraire des liens via des expressions régulières, nous devons comprendre la structure de base des liens des pages HTML. De manière générale, les liens dans les pages HTML sont enveloppés dans un certain contenu texte avec des balises. Sa structure de base est la suivante :

Contenu du texte du lien

Par conséquent, nous pouvons faire correspondre tous les liens via des expressions régulières. Le code spécifique est le suivant :

$regexp ='1*href=['"]?(2+)';
preg_match_all($regexp, $html, $match );
$link = array_unique($match[1]);

Le code ci-dessus utilise l'expression régulière < as1*href=['"]?(2+) pour correspondre la balise a et extrayez-la https://www.php.cn/link/39cec6d4d21b5dade7544dab6881423e dans l'attribut href. Parmi eux, 2+ signifie faire correspondre une série de caractères sans guillemets simples, guillemets doubles ni espaces. Enfin, utilisez la fonction array_unique pour dédupliquer tous les https://www.php.cn/link/39cec6d4d21b5dade7544dab6881423e.

  1. Utilisez l'analyseur DOM pour extraire les liens

L'analyseur DOM intégré de PHP offre un moyen plus pratique et plus précis d'analyser les liens dans les fichiers HTML. Il peut convertir des pages HTML en une arborescence DOM (Document Object Model), afin de pouvoir parcourir l'arborescence du document pour interroger et extraire des informations.

Le code spécifique est le suivant :

$doc = new DOMDocument();
$doc->loadHTML($html);
$links = $doc->getElementsByTagName('a');
foreach ( $links as $link) {

$href = $link->getAttribute('href');
Copier après la connexion

}

Dans le code ci-dessus, nous utilisons d'abord DOMDocument pour convertir la chaîne $html en modèle objet de document, puis obtenons toutes les balises a via la méthode getElementsByTagName('a'), et parcourir chacun une balise et extraire la valeur de l'attribut dans son attribut href.

3. Traiter les liens

Après avoir obtenu tous les liens, nous devons traiter ces liens. La méthode de traitement spécifique dépend des besoins. Voici quelques méthodes de traitement courantes :

  1. Remplacement

Parfois, nous devons modifier par lots certaines parties du lien, comme supprimer le préfixe http:// du lien. Vous pouvez utiliser la fonction str_replace pour remplacer des chaînes.

foreach ($links as $link) {

$href = $link->getAttribute('href');
$new_href = str_replace('http://', '', $href);
$link->setAttribute('href', $new_href);
Copier après la connexion

}

  1. Add

Parfois, nous devons ajouter des chaînes ou des paramètres spécifiques à tous les liens, comme l'ajout de paramètres utm_campaign=xxx après tous les liens. Peut être ajouté en utilisant la concaténation de chaînes.

foreach ($links as $link) {

$href = $link->getAttribute('href');
$new_href = $href . '?utm_campaign=xxx';
$link->setAttribute('href', $new_href);
Copier après la connexion

}

  1. Filtrage

Parfois, nous devons filtrer certains liens, tels que certains liens publicitaires. Vous pouvez utiliser les instructions if pour juger et filtrer les liens.

foreach ($links as $link) {

$href = $link->getAttribute('href');
if (strstr($href, 'ad.')) {
    $link->parentNode->removeChild($link);
}
Copier après la connexion

}

4 Enregistrez le fichier HTML

Après avoir traité tous les liens, nous devons enregistrer les résultats dans le fichier HTML. Tout comme pour lire un fichier HTML, utilisez la fonction file_put_contents pour écrire dans le fichier.

$filename_new = 'example_new.html';
$html_new = $doc->saveHTML();
file_put_contents($filename_new, $html_new);

Pour résumer, utiliser PHP pour analyser des liens en HTML est une méthode efficace Façon, méthode de traitement par lots pratique. Obtenez des liens via des expressions régulières ou des analyseurs DOM, puis traitez-les et enfin enregistrez-les dans des fichiers HTML, afin de pouvoir mettre à jour et modifier rapidement un grand nombre de liens.


  1. >
  2. '">

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