Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/12/2011, 15h19   #1
Invité de passage
 
Inscription : août 2007
Messages : 9
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 9
Points : 2
Points : 2
Par défaut Parsage d'urls complexes

Bonjour,

J'ai un petit souci et je n'arrive pas à trouver la réponse sur le net.

Je travail sur un script qui doit récupérer et retraiter des urls dans des pages webs. La regex qui me pose problème a pour but de récupérer les urls associées à des images.

La voici :

Code :
1
2
 
preg_match_all('#<a href=("|\')([^"\']*)("|\')[^>]*><img src=("|\')[^"\']*("|\')[^>]*></a>#', $contenu, $pages_images);
Elle fonctionne, mais il manque un détail pour qu'elle soit parfaite. Il faut qu'elle soit capable de traiter les liens si des choses sont insérées entre <a et href, ou entre <img et src.

Par exemple, si sur une des pages scannée il y a quelque chose sous la forme <a href="#"><img id="truc" src="#" /></a>, elle ne fonctionne plus. Je voudrais donc procéder de la même façon que pour les fin de chaines.

J'ai essayé comme ça :

Code :
1
2
 
preg_match_all('#<a [^href]*href=("|\')([^"\']*)("|\')[^>]*><img [^src]*src=("|\')[^"\']*("|\')[^>]*></a>#', $contenu, $pages_images);
Mais évidemment ça ne fonctionne pas. Comme puis-je procéder pour obtenir "tout ce qui n'est pas href" et "tout ce qui n'est pas src" ?

Merci beaucoup.
ebola est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2011, 16h17   #2
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Bonjour,

Quelque chose comme ça irait ? :
Code :
1
2
3
4
5
6
7
<?php
 
$a = '<a class="link" href="hrefA"><img id="truc" src="srcImg" /></a>';
$pattern = '/<a.*href=(["|\'].*["|\']).*><img.*src=(["|\'].*["|\']).*\/><\/a>/ui';
$b = preg_match($pattern, $a, $matches);
 
?>
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2011, 16h25   #3
Invité de passage
 
Inscription : août 2007
Messages : 9
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 9
Points : 2
Points : 2
Salut,

J'ai essayé avec des .*, mais cela ne semble pas fonctionner parfaitement. C'est pour ça que je voulais savoir s'il existe un moyen de faire "tout ce qui n'est pas src", pour être sur qu'il s’arrête au bon endroit.
ebola est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2011, 16h35   #4
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Citation:
Envoyé par ebola Voir le message
Salut,

J'ai essayé avec des .*, mais cela ne semble pas fonctionner parfaitement. C'est pour ça que je voulais savoir s'il existe un moyen de faire "tout ce qui n'est pas src", pour être sur qu'il s’arrête au bon endroit.
Ah bon chez moi j'obtiens bien
Code php :
1
2
$matches[1] = "hrefA";
$matches[2] = "srcImg";
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h30.


 
 
 
 
Partenaires

Hébergement Web