Passer du HTML->Texte

Discussion dans 'Web, design' créé par Ezekiel !, 24 Août 2006.

Statut de la discussion:
Fermée.
  1. Offline
    Ezekiel ! Elite
    Hello !
    J'ai un probleme que je n'arrive pas à résoudre.
    J'ai une chaine de caractere qui contient un texte ainsi que des tag html du style <div>, <strong>,...
    Cette chaine est affichée sur un site mais aussi dans un pdf, mais j'aimerais lorsque je l'affiche dans mon pdf virer tout ces tags pour ne garder que du texte "pur".
    J'ai pas trouvé de fonction php qui le fait mais je suis sur que un script doit exister qqe part... Niveau langage, je préfere php car je sais qu'on peut le faire en perl mais je n'ai pas envie de me lancer la dedans...
    Voila d'avance merci à ceux qui répondront.

    EDIT : j'ai un début de solution mais ma regex ne m'enleve pas les </div>, </span>, ... qqun a une idée ?
    Code:
    $text = preg_replace ('!</?div.+?>!', '', $text);
    	$text = preg_replace ('!</?span.+?>!', '', $text);
    	$text = preg_replace ('!</?p.+?>!', '', $text);
    	$text = preg_replace ('!</?br.+?>!', "\n", $text);
    	$text = html_entity_decode($text);
    
    Ezekiel !, 24 Août 2006
    #1
  2. Offline
    FoX SpeEd Touriste
    ben deja tu a bien commencer mais tu n'a pas besoin de regex
    Tu fait simplement des str_replace("balise a suprimer", "", $variable de sortie); et ce pour toutes les balise que tu est suceptible de rencontrer dans ton code et c'est tou ;) t
    FoX SpeEd, 24 Août 2006
    #2
  3. Offline
    Ahava Revenant
    Exactement, tu remplace par du vide ce que tu veux, ainsi tu élimine les balises que tu veux virer de ta chaine :)



    Code:
    $var = str_replace("<div>","",$var);
    $var = str_replace("</div>","",$var);
    $var = str_replace("<span>","",$var);
    $var = str_replace("</span>","",$var);
    
    Ahava, 24 Août 2006
    #3
  4. Offline
    NoBrain Touriste
    Ca fait quand même un paquet de balises à définir :pfiou:

    Voilà une regex qui peut être utile. Elle sélectionne chaque TAG Html, ouvert ou fermé :

    </?[a-z][a-z0-9]*[^<>]*>

    Ne me demande pas comment l'implémenter dans ton code, j'utilise juste les regex dans des search/replace :-'

    Bonne continuation
    NoBrain, 24 Août 2006
    #4
  5. Offline
    FoX SpeEd Touriste
    heu je pense que y manque un truc dans l'expression reguliere il manque pas les " et les ' pcq parfoi tu en à aussi dedans et puis faut voir qu'elle genre de texte tu a pcq si dans ton texte tu a des trucs qui commence par < et termine par > ca va foirer sinon tres bonne idée cette regex

    donc ca donnerai : $text = ereg_replace ("</?[a-z][a-z0-9]*[^<>]*>", "", $text);

    EDIT: si tu veut garder les retours à la ligne <br> ca va foirer pcq il va les effacer donc tu doit avant ca faire un $text = str_replace("<br>", "\n", $text);
    FoX SpeEd, 24 Août 2006
    #5
  6. Offline
    NoBrain Touriste
    J'ai fait des ptits test avant, ça chope bien tout on dirait =]
    C'est clair que dans ce cas, la regex bouffe n'importe quoi entre < et >
    Mais ces caractères sont normalement évités dans une utilisation texte sur le
    web pour ce type de raison justement. Il risque de ne pas en rencontrer souvent.
    Là je laisse faire les pro du code =]
    Excellent si il peut/veut garder certaines balises pour le formatage du text :gne:
    NoBrain, 24 Août 2006
    #6
  7. Offline
    Ezekiel ! Elite
    Je vais tester ton code Fox speed pour voir ce que ça donne :)
    Merci à tous pour vos réponses !
    Ezekiel !, 24 Août 2006
    #7
  8. Offline
    gogoprog Oprahiste vaudou
    Moi j'utilisais ca pour virer toutes les balises :

    Code:
    function message_clean2($message)
    {
    return nl2br(htmlentities(wordwrap( $message, 1000, "\n", 1)));
    }
    
    gogoprog, 24 Août 2006
    #8
  9. Offline
    Calvin80 Elite
    hou que c'est pas beau ça dis donc !!
    str_replace prends des tableaux aussi en entrée, si je me rappelle bien (la flemme de veirfier lol)?
    Calvin80, 24 Août 2006
    #9
  10. Offline
    FoX SpeEd Touriste

    oui ca accepte les tableau comme entrée
    FoX SpeEd, 24 Août 2006
    #10
  11. Offline
    Calvin80 Elite
    bien ce qui me semblait ;) donc c pas tres beau/propre d'appeler N fois 'str_replace' :p
    Calvin80, 24 Août 2006
    #11
  12. Offline
    FoX SpeEd Touriste
    claire mais il allait le faire avec des regex pour finir je croit
    FoX SpeEd, 24 Août 2006
    #12
  13. Offline
    II phl II Touriste
    Cela dépasse mes compétences, je ne saurai donc t'aider...

    Par contre je serais intéressé de savoir comment tu passes tes données dans un pdf :pfiou:

    Merci :)
    II phl II, 24 Août 2006
    #13
  14. Offline
    Ezekiel ! Elite
    Donc pour finir, j'utilise le code de Fox Speed couplé au mien qui fait des merveilles.
    Pour générer des pdf, j'ai pas réinventé la roue, j'ai choppé une classe ici :
    http://www.fpdf.org/
    Elle est pas trop compliquée et y a pas mal d'exemple avec une doc en français... le rêve quoi :p
    Merci encore à tout le monde pour les réponses =D
    Ps: FoxSpeed j'ai pas reçu ton 2eme mp
    Ezekiel !, 24 Août 2006
    #14
  15. Offline
    II phl II Touriste
    merci pour le lien Ezekiel, je ne connaissais pas :-'
    II phl II, 24 Août 2006
    #15
  16. Offline
    NoBrain Touriste
    De rien ;) =]
    NoBrain, 25 Août 2006
    #16
  17. Offline
    n3tfusiOn Elite
    Je faisais le même genre de fonction .. :p

    Je pense que c'est le plus simple, sauf si tu veux entrer toute les balises possibles -_-°
    n3tfusiOn, 25 Août 2006
    #17
  18. Offline
    FoX SpeEd Touriste
    je ne connaissait pas celle la mais quand g regarder de plus près ce n'est pas seulement pour gerer le problème des retours à la ligne ?? pcq je ne voit pas comment il pourait enlever toutes les balise... :-'
    FoX SpeEd, 25 Août 2006
    #18
Statut de la discussion:
Fermée.