Maison > développement back-end > tutoriel php > Expression régulière PHP : Comment faire correspondre tous les liens d'image en HTML

Expression régulière PHP : Comment faire correspondre tous les liens d'image en HTML

PHPz
Libérer: 2023-06-23 13:38:01
original
2267 Les gens l'ont consulté

Dans les pages HTML, nous devons souvent extraire des liens d'images pour les utiliser à d'autres occasions, ou effectuer du téléchargement d'images, un traitement par lots, etc. À l’heure actuelle, les expressions régulières PHP peuvent nous aider à faire correspondre rapidement et précisément tous les liens d’images.

1. Analyser les liens d'images en HTML

En HTML, les liens d'images apparaissent généralement sous la forme de balises , et leur format est le suivant :

<img src="image.jpg" alt="图片">
Copier après la connexion

Parmi eux, l'attribut src précise l'adresse du lien du image. Généralement, les formats des liens images sont les suivants :

  1. Lien relatif : /images/picture.jpg
  2. Lien absolu : https://www.example.com/images/picture.jpg
  3. Lien avec paramètres : https ://www.example.com/images/picture.jpg?size=large
  4. Lien de chemin relatif : ../images/picture.jpg

Nous devons écrire des expressions régulières pour correspondre à ces quatre formats de lien .

2. Lien d'image de correspondance d'expression régulière PHP

Il existe de nombreux types de fonctions d'expression régulière en PHP, parmi lesquelles preg_match() est la plus couramment utilisée, qui peut être utilisée pour faire correspondre des chaînes spécifiées à partir de texte. Ce qui suit est une expression régulière qui peut correspondre aux quatre formats de lien d'image ci-dessus :

$pattern = '/<img.+?src=['"](.+?)['"].*?>/';
Copier après la connexion

Cette expression régulière se compose de plusieurs parties, expliquons-les une par une ci-dessous :

  1. ['"] signifie des guillemets, qui peuvent correspondre à des guillemets doubles ou simples.
  2. (.+?) signifie correspondre à n'importe quel caractère jusqu'à ce que le prochain guillemet soit rencontré. Un groupe de capture est utilisé ici, et $matches peut être utilisé dans l'appel de code Array ultérieur
  3. .*? signifie une correspondance non gourmande de n'importe quel caractère jusqu'au symbole >

Ensuite, nous utilisons la fonction preg_match() pour extraire tous les liens d'image en HTML :

$html = file_get_contents('example.html'); // 读取 HTML 文件
preg_match_all($pattern, $html, $matches); // 匹配链接
$imgUrls = $matches[1]; // 获取匹配到的链接地址
Copier après la connexion

Dans ceci De cette façon, nous pouvons obtenir un tableau $imgUrls contenant tous les liens d'image. Si vous souhaitez faire correspondre uniquement les liens d'image dans un certain format, vous pouvez apporter quelques modifications à l'expression régulière, comme faire correspondre uniquement les liens absolus :

$pattern = '/<img.+?src=['"](https?://.+?)['"].*?>/';
Copier après la connexion

Cette expression régulière. ajoute http ou https La limitation de l'en-tête du protocole est que seuls les liens absolus commençant par ces deux protocoles correspondent.

Résumé

Utiliser des expressions régulières PHP pour faire correspondre les liens d'image en HTML n'est pas une question compliquée. lien correspondant en fonction du format du lien. Expression régulière, puis utilisez la fonction preg_match() pour extraire rapidement et précisément tous les liens. Si vous avez souvent besoin d'extraire d'autres contenus du HTML, vous pouvez également utiliser une méthode similaire.

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