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 19/04/2011, 13h56   #1
Membre actif
 
Homme
Inscription : avril 2011
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 426
Points : 171
Points : 171
Par défaut Un problème de Float

Bonjour,

Cette regexp à pour but de modifier un code HTML (issu de TINYMCE) afin que celui-ci puisse être mangé par la class HTML2PDF.

En effet, il réside un souci sur les images qui ont un attribut "float". et qui sont dans un paragraphe.

Il faut donc faire une regexp qui recherche <p ...><img ... > et qui remplace par <img ... ><p ... >

Il faut donc modifier ce type de chaine :

Code :
<p style="margin-bottom: 0cm;"><a title="Lo&iuml;c sur la glace, pr&eacute;voyez les pneus clout&eacute;s!" rel="lightbox" href="/upload/web/images/moi/periples/periples_vtt/2011-04-16/IMG_9230.jpg"><img style="float: left; border: 0pt none; margin: 5px;" title="Lo&iuml;c sur la glace, pr&eacute;voyez les pneus clout&eacute;s!" src="./upload/web/images/moi/periples/periples_vtt/2011-04-16/IMG_9230.jpg" alt="V&eacute;t&eacute;tiste dans la for&ecirc;t et plaques de glaces" width="288" height="191" /></p>
J'ai un début avec cette regexp qui sélectionne ce qu'il faut mais qui ne fait pas la distinction entre les images avec attributs float et celles sans :

Code :
'#<p ([^>]*)><a ([^>]*)><img([^>]*)></a>#'
Pouvez-vous me filer un coup de main ?

Merci

heretik
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 14h03   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
Citation:
Envoyé par stealth35 Voir le message
pour parser du HTML c'est DOMDocument
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 14h10   #3
Membre actif
 
Homme
Inscription : avril 2011
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 426
Points : 171
Points : 171
Aille ouille, est-ce nécessaire d'apprendre tout ça pour une utilisation ?
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 14h15   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
Citation:
Envoyé par heretik25 Voir le message
Aille ouille, est-ce nécessaire d'apprendre tout ça pour une utilisation ?
c'est 50 fois plus dur de comprendre les regexp que de API DOM, c'est pareil que celle du javascript
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 14h23   #5
Membre actif
 
Homme
Inscription : avril 2011
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 426
Points : 171
Points : 171
Arf

Je n'étais pas si loin que ça avec ma regexp, peut-on essayer de résoudre mon souci quand même ? Promis j'apprendrai plus tard l'API DOM

EDIT : Avec celle-ci :
Code :
'#<p ([^>]*)><a ([^>]*)><img style="float([^>]*)></a>'#
on trouve les bonnes lignes, est-ce la bonne façon de faire ?
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 14h26   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
Citation:
Envoyé par heretik25 Voir le message
Arf

Je n'étais pas si loin que ça avec ma regexp, peut-on essayer de résoudre mon souci quand même ? Promis j'apprendrai plus tard l'API DOM
tu résous pas un problème c'est toi qui en a crée un en faisant ça avec des regex
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 14h28   #7
Membre actif
 
Homme
Inscription : avril 2011
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 426
Points : 171
Points : 171
Peut-être mais pourquoi faire simple quand on peut faire compliqué ?

Je sais je suis têtu
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 14h37   #8
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
Citation:
Envoyé par heretik25 Voir le message
Peut-être mais pourquoi faire simple quand on peut faire compliqué ?

Je sais je suis têtu
c'est toi qui fait compliquer depuis le début

oublie pas de mettre le mode ungreedy pour tes regex
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 14h52   #9
Membre actif
 
Homme
Inscription : avril 2011
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 426
Points : 171
Points : 171
Citation:
Envoyé par stealth35 Voir le message
c'est toi qui fait compliquer depuis le début

oublie pas de mettre le mode ungreedy pour tes regex

Message reçu pour ungreedy, c'est bien l'option \U ?

Parcontre, tu peux me filer un coup de main pour clôturer cette regex ?
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 14h59   #10
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
c'est ca que tu veux faire ?
Code :
1
2
 
echo preg_replace('/(<p[^<]+?>.*?)(<img[^<]+?>)(<\/p>)/', '$2$1$3', $truc);
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 15h12   #11
Membre actif
 
Homme
Inscription : avril 2011
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 426
Points : 171
Points : 171
Je cherche à passer de <p ...><img ... > à <img ... ><p ... > que lorsqu'il y à un attribut float sur l'image et la regexp que tu me propose ne le fait apparemment pas ?

Moi j'avais pensé à ça :

Code :
'#<p ([^>]*)><a ([^>]*)><img style="float([^>]*)></a>#'
mais j'ai du mal à reconstituer derrière la chaine.
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 15h28   #12
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
ça va être bien galère ? je trouve que tu t’embête pour pas grand chose
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 15h33   #13
Membre actif
 
Homme
Inscription : avril 2011
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 426
Points : 171
Points : 171
Ok, bah essayons avec DomDocument si tu souhaites m'initier c'est sans souci !

Edit : ca fonctionne avec :

Code :
$contenu = preg_replace('#<p ([^>]*)><a ([^>]*)><img style="float([^>]*)></a>#','<a $2><img style="float $3> </a><p $1 >',$contenu);
Lien du PDF généré :


http://partir-en-vtt.com/test_export_pdf.php


heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h39.


 
 
 
 
Partenaires

Hébergement Web