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 12/09/2006, 16h09   #1
Candidat au titre de Membre du Club
 
Inscription : juillet 2003
Messages : 32
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 32
Points : 10
Points : 10
Par défaut Pb de compréhension de pattern

Bonjour,

Tout d'abord merci d'offrir un espace d'échange sur ces fichues expressions régulières car je crois que c'est un secteur où on galère le plus !!!

J'ai un Regex qui sort d'un scipt de contribution SPIP que je ne comprends pas jusqu'au bout ...

Le principe sortir d'une chaine du type de celle ci :

<a href="IMG/jpg/114669058170web.jpg" type="image/jpeg" title='JPG - 4.8 ko'>
<img src='IMG/cache-120x203/110web-120x203.jpg' width='12' height='203' alt="o" />
</a>

Je voudrai en extraire le contenu du href du lien pour le remplacer par un lien javascript pour ouvrir une popup.

Le regex que j'ai trouvé :

$motif = "/<a href='IMG\/(jpg|gif|png)\/([^']+)'>/";

Je ne comprend pas la fin ([^']+)'>/ ...
De plus, il ne fonctionne pas ...

Si qq peut m'éclairer, je l'en remercie d'avance !
Bye
Seb
seb_perl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2006, 18h06   #2
Membre émérite
 
Inscription : mai 2004
Messages : 709
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : mai 2004
Messages : 709
Points : 852
Points : 852
Ta regex ne marchera jamais comme ça. Voici une des nombreuses solutions possibles:

Code :
1
2
3
4
$motif = '#<a href=(\'|").*\1#Usi';
$rplc  = '<a href="ici_le_lien_JS"';
 
echo htmlentities(preg_replace($motif, $rplc, $txt));
__________________
:q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp
:quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT
Jabber: ripat at im.apinc.org
ripat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2006, 19h54   #3
Candidat au titre de Membre du Club
 
Inscription : juillet 2003
Messages : 32
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 32
Points : 10
Points : 10
Salut,

Merci beaucoup pour ta réponse !
Par contre, je galère pas mal en Regex ...

Code :
$motif = '#<a href=(\'|").*\1#Usi';
Je ne comprends pas à quoi sert le \1 ...

Et si dans cette chaine je voulais isoler l'adresse du lien et de l'image, c'est possible avec un seul pattern ?

Code :
1
2
3
<a href="IMG/jpg/114669058170web.jpg" type="image/jpeg" title='JPG - 4.8 ko'>
<img src='IMG/cache-03/110web-13.jpg' width='12' height='23' alt="o" />
</a>
Merci pour votre aide !
seb_perl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2006, 09h11   #4
Membre éclairé
 
Avatar de Space Cowboy
 
Inscription : avril 2005
Messages : 495
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 495
Points : 306
Points : 306
http://www.expreg.com/pregmatchall.php


Extraire des liens <a href > d'une chaîne (ou d'une page)


Citation:
<?php
$chaine
='Ceci est la page d\'un site sur les <a href="http://www.expreg.com">Expressions régulières</a> que j\'ai trouvé sur <a href="http://www.google.be" target="_top">Google.be</a> et que placé dans une chaine avec file_get_contents()';

$motif='`<a href="[^>]+">[^<]+</a>`';
preg_match_all($motif,$chaine,$out);

$count=count($out[0]);

for(
$i=0;$i<$count;$i++)
{
echo
$out[0][$i],'<br/>';
}
?>
Exemple d'utilisation de preg_match_all permettant de récupérer des lien <a href dans une chaine.
En utilisant file_get_contents() qui place le contenu d'une page dans une chaine, on peut matcher tous les liens contenu par exemple.

Colorez votre code PHP sur les forums grâce à Developpez.com
Space Cowboy 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 05h51.


 
 
 
 
Partenaires

Hébergement Web