Récupérez tous les liens de la page à partir de la page. Bien sûr, utiliser des expressions régulières PHP est le moyen le plus pratique. Pour écrire une expression régulière, vous devez d’abord résumer le modèle. Alors, combien de formes les liens sur la page auront-ils ? Jetons un coup d'œil ci-dessous.
Avant-propos
Un lien est un hyperlien, qui est un lien d'un élément (texte, image, vidéo, etc.) vers un autre élément (texte, image, vidéo, etc.) . Il existe généralement trois types de liens dans les pages Web. L'un est un lien hypertexte URL absolu, qui est le chemin complet vers une page ; l'autre est un lien hypertexte URL relatif, qui renvoie généralement à d'autres pages du même site Web ; un lien hypertexte dans une page, qui renvoie généralement à d'autres emplacements au sein de la même page.
Une fois que vous aurez compris les types de liens, vous saurez que pour récupérer des liens, les principaux sont les hyperliens URL absolus et les hyperliens URL relatifs. Pour écrire des expressions régulières correctes, nous devons comprendre le modèle de l’objet que nous recherchons.
Commençons par les liens absolus, également appelés URL (Uniform Resource Locators), qui identifient des ressources uniques sur Internet. La structure de l'URL contient trois parties : protocole, nom du serveur, chemin et nom du fichier .
Le protocole est un identifiant qui indique au navigateur comment gérer le fichier à ouvrir Le plus courant est le protocole http. Cet article ne considère que le protocole HTTP. Comme pour les autres protocoles https, ftp, mailto, telnet, etc., vous pouvez également les ajouter selon vos besoins.
Le nom du serveur indique au navigateur comment atteindre ce serveur, généralement un nom de domaine ou une adresse IP, et parfois un numéro de port (la valeur par défaut est 80). Dans le protocole FTP, des noms d'utilisateur et des mots de passe peuvent également être inclus, ce qui ne sera pas pris en compte dans cet article.
Le chemin et le nom du fichier, généralement séparés par /, indiquent le chemin d'accès au fichier et le nom du fichier lui-même. S'il n'y a pas de nom de fichier spécifique, le fichier par défaut dans ce dossier est accédé (peut être défini côté serveur).
Alors maintenant, il est clair que la forme typique des liens absolus à explorer peut être résumée comme suit :
<span style="color: #000000">http://www.xxx.com/xxx/yyy/zzz.html</span>
Il existe une spécification claire pour la gamme de caractères qui peut être utilisé pour chaque pièce, veuillez vous référer à la RFC1738 pour plus de détails. Ensuite, l'expression régulière peut être écrite.
/(http|https):\/\/([\w\d\-_]+[\.\w\d\-_]+)[:\d+]?([\/]?[\w\/\.]+)/i
s'explique comme suit :
(http| https) La première parenthèse correspond à la partie protocolaire.
([wd-_]+[.wd-_]+)La deuxième parenthèse correspond à la partie du nom de domaine.
([/]?[w/.]+)La troisième parenthèse correspond au chemin relatif.
Au moment de la rédaction, la plupart des URL peuvent être mises en correspondance, mais les URL avec des paramètres ne peuvent pas être explorées, ce qui peut amener la page à signaler une erreur lors d'un nouvel accès. Quels paramètres sont requis dans la spécification RFC1738 ? pour segmenter, suivi de paramètres, mais les applications RIA modernes peuvent utiliser d'autres formes étranges pour la segmentation.
Modifiez-le légèrement pour que les paramètres de requête puissent être recherchés. Cela ne couvre toujours pas toutes les situations, comme les situations où l'URL contient des caractères chinois, des espaces et d'autres caractères spéciaux, mais cela répond essentiellement à mes besoins, je n'irai donc pas plus loin.
/(http|ftp|https):\/\/([\w\d\-_]+[\.\w\d\-_]+)[:\d+]?([\/]?[\w\/\.\?=&;%@#\+,]+)/i
L'avantage d'utiliser des parenthèses est que lors du traitement des résultats, vous pouvez facilement obtenir le protocole, le nom de domaine et le chemin relatif, ce qui facilite les opérations ultérieures. traitement.
Par exemple, lorsque vous utilisez preg_match_all()
pour faire correspondre, l'index 0 du tableau de résultats correspond à tous les résultats, 1 est le protocole, 2 est le nom de domaine et 3 est le chemin relatif .
Résumé : Ce qui précède représente l’intégralité du contenu de cet article, j’espère qu’il sera utile à l’étude de chacun.
Recommandations associées :
Comment implémenter une requête de correspondance floue multi-champs en PHP
phpmailer Comment implémenter une boîte aux lettres de liaison
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!