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 17/07/2011, 16h16   #1
Invité de passage
 
Homme
Inscription : février 2010
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : février 2010
Messages : 5
Points : 3
Points : 3
Par défaut Regex pour preg_replace avec exclusion

Bonjour , alors pour commencé je ne suis pas un expert des regex
loin de la d'ailleurs
avec les regex simples ça va mais la j'ai un souci
je vais essayer d'expliquer mais c'est pas simple

donc je veux faire un preg replace sur des balises img dans le code html
j'utilise tinymce qui me met des balises images comme ceci pour les smileys
Code :
<img title='{#wink.gif}' src='data:image/gif;base64,R0lGODlhFAAUAHMAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJCgAPACwAAAAAFAAUAINDNBDU0srTow16aT7x0BuelHbv8vNpUBKZcwr94yF1YzbkuxSxig3////h4d0AAAAEnPDJSaulJpRxziiBcUlOcTALQQjMUThXoCBEYifqgihB5RyCmxC3aMEkhgJjOCToCqJH4FBjJgBEwaH3UN4A4K/NiShIFAurDZsdSKhqoVP7rrHV88M5dWc6iwoSSnZ4CwJlElMpV36GWlxJKCphYwuGZVEPPygpKn8CLAdHEzIIApaooAc8FyUHCAygDAguoxYZBQodCiCZI78VEQA7' border='0' alt='{#wink.gif}'/>
le but au départ était de repérer les images extérieures
le souci c'est que je récupérais la balise img et que je remplacait pas un lien pour que les modo fassent les changements
Code :
$texte = preg_replace("/<((img.*?src=[\"\'](http:)?\/\/)(?!(www\.)?aqua-passion)(.*?)[\"\'](.*?))>/i", "IMAGE EXTERIEURE A METTRE SUR LE SERVEUR =><a href='http://\\4' target='_blank'>&lt;\\1&gt;</a>", $texte);
cette regex bug donc avec l'attribut "src='data:image/gif..." indiqué plus haut
Je voulais donc l'exclure avec une regex du genre
Code :
/<(img.*?src=[\"\']((http:\/\/)(?!(www\.)?aqua-passion)|(?!data))(.*?)[\"\'](.*?))>/i
mais cela ne fonctionne pas

si quelqu'un a une idée ,
merci
Aqua-Passion.com est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2011, 19h53   #2
Futur Membre du Club
 
Florent Denis
Inscription : décembre 2009
Messages : 19
Détails du profil
Informations personnelles :
Nom : Florent Denis

Informations forums :
Inscription : décembre 2009
Messages : 19
Points : 18
Points : 18
Je ne sais pas si ça va pouvoir t'aider, mais j'avais fait des test avec ce genre d'élément et mon regex ne fonctionnait pas à cause de la chaine de caractère trop importante, du coup j'ai du passer par du strpos + substr + str_replace.
pokap est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2011, 20h41   #3
Invité de passage
 
Homme
Inscription : février 2010
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : février 2010
Messages : 5
Points : 3
Points : 3
bonjour
merci,
pareil j'ai fait des tests toute l'après midi et il semble que se ne soit pas le top pour les exclusions

les (?! interférences trop sur le traitement donc cela devient vite trop compliqué avec des résultats très loin de ce que l'on cherche

J'ai donc contourné le problème

encore merci
Aqua-Passion.com 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 13h01.


 
 
 
 
Partenaires

Hébergement Web