IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Un problème de Float [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    <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 : Sélectionner tout - Visualiser dans une fenêtre à part
    '#<p ([^>]*)><a ([^>]*)><img([^>]*)></a>#'
    Pouvez-vous me filer un coup de main ?

    Merci

    heretik

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    pour parser du HTML c'est DOMDocument

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    Aille ouille, est-ce nécessaire d'apprendre tout ça pour une utilisation ?

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    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

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    '#<p ([^>]*)><a ([^>]*)><img style="float([^>]*)></a>'#
    on trouve les bonnes lignes, est-ce la bonne façon de faire ?

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    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

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    Peut-être mais pourquoi faire simple quand on peut faire compliqué ?

    Je sais je suis têtu

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    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

  9. #9
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    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 ?

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    c'est ca que tu veux faire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo preg_replace('/(<p[^<]+?>.*?)(<img[^<]+?>)(<\/p>)/', '$2$1$3', $truc);

  11. #11
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    '#<p ([^>]*)><a ([^>]*)><img style="float([^>]*)></a>#'
    mais j'ai du mal à reconstituer derrière la chaine.

  12. #12
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    ça va être bien galère ? je trouve que tu t’embête pour pas grand chose

  13. #13
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    Ok, bah essayons avec DomDocument si tu souhaites m'initier c'est sans souci !

    Edit : ca fonctionne avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $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



+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/03/2006, 19h29
  2. Problème conversion float vers double
    Par jhenaff dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 27/01/2006, 10h39
  3. Problème avec float.
    Par Paulinho dans le forum Débuter
    Réponses: 1
    Dernier message: 29/11/2005, 10h27
  4. [IB701] problème de float ??
    Par BoeufBrocoli dans le forum InterBase
    Réponses: 5
    Dernier message: 15/09/2003, 14h15
  5. problème de float sur SQL server 2000.
    Par fidji dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 24/07/2003, 14h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo