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

PHP & Base de données Discussion :

php et caractères de balise html


Sujet :

PHP & Base de données

  1. #1
    Débutant  
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Points : 217
    Points
    217
    Par défaut php et caractères de balise html
    yo! a tous

    J'ai fait un script php qui contient une zone de texte dont le but est de créer une page html avec le texte que l'on a écrit dans la zone, et qui est comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Mise en forme : <br/>
    <br/>
    <textarea rows="20" cols="80" name="article"   onmouseover="this.focus();"></textarea>

    Ensuite, coté script php, je récupère la variable article comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?php
    $article = $HTTP_POST_VARS['article'];
    et ensuite, je fais un echo comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ...echo '
    </p><br/><br/><br/><table width="748"><tbody><tr><td width="740"><div align="justify"><p>'.$article.'</p></div></td></tr></tbody></table></div>'
    ;

    le problème est que quand on veut mettre des balises html dans la zone de texte, le script php ne les comprends pas. Il comprends par exemple:
    <div align="center">
    au lieu de
    <div align="center">

    ce qui fait que le texte au n'est pas centré. J'ai essayé $article=htmlentities($article);
    mais ca ne change rien. En fait, ca écrit littéralement <div align="center">

    vous avez un exemple ici:
    http://www.lygeros.org/lygeros/9001-fr.html

    comment puisje faire pour que les balises soient prises en compte?
    merci

  2. #2
    Membre éprouvé Avatar de vorace
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2010
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2010
    Messages : 573
    Points : 915
    Points
    915
    Par défaut
    c'est le contraire que tu dois faire : html_entity_decode()
    Développeur informatique contrarié...

  3. #3
    Débutant  
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Points : 217
    Points
    217
    Par défaut
    j'ai testé, ca change un peu. Mais
    dans le code source, on a:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div align=\"center\">ddd</div>
    Il y a les \.

  4. #4
    Membre éprouvé Avatar de vorace
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2010
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2010
    Messages : 573
    Points : 915
    Points
    915
    Par défaut
    mets le code qu'on puisse voir ce que tu fais à la chaine de caractère...
    t'as un second paramètre dans la fonction pour les doubles quottes et les simples...
    les anti slash ressemblent à du caractère échappé : tu fais pas un mysql_real_escape_string ou un addslashes sur ta variable post ?!
    Développeur informatique contrarié...

  5. #5
    Débutant  
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Points : 217
    Points
    217
    Par défaut
    Ok
    On a donc une variable $article que l'on rentre dans une zone de texte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	$article               = $HTTP_POST_VARS['article'];
    puis ensuite, je lui fait subir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $article = preg_replace(array("/(\t)/","/(\n)/",'/[\/\\\\]"/',"/[\/\\\\]'/","/(«)/","/(»)/","/(À)/","/(È)/","/(É)/","/(Ê)/","/(à)/","/(á)/","/(â)/","/(æ)/","/(ç)/","/(è)/","/(é)/","/(ê)/","/(ë)/","/(î)/","/(ï)/","/(ô)/","/(ö)/","/(ù)/","/(û)/","/(ü)/","/(œ)/","/(’)/"),
    array('	',"<br/>",'"',''','&laquo;','&raquo;','À','È','É','Ê','à','á','â','æ','ç','è','é','ê','ë','î','ï','ô','ö','ù','û','ü','œ','''),$article);
    et enfin:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $article=html_entity_decode($article)

  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 726
    Points
    10 726
    Par défaut
    Citation Envoyé par deubelte Voir le message
    Ok
    On a donc une variable $article que l'on rentre dans une zone de texte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	$article               = $HTTP_POST_VARS['article'];
    deja c'est $_POST

    Citation Envoyé par deubelte Voir le message
    puis ensuite, je lui fait subir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $article = preg_replace(array("/(\t)/","/(\n)/",'/[\/\\\\]"/',"/[\/\\\\]'/","/(«)/","/(»)/","/(À)/","/(È)/","/(É)/","/(Ê)/","/(à)/","/(á)/","/(â)/","/(æ)/","/(ç)/","/(è)/","/(é)/","/(ê)/","/(ë)/","/(î)/","/(ï)/","/(ô)/","/(ö)/","/(ù)/","/(û)/","/(ü)/","/(œ)/","/(’)/"),
    array('	',"<br/>",'"',''','&laquo;','&raquo;','À','È','É','Ê','à','á','â','æ','ç','è','é','ê','ë','î','ï','ô','ö','ù','û','ü','œ','''),$article);
    c'est htmlspecialschars

    Citation Envoyé par deubelte Voir le message
    et enfin:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $article=html_entity_decode($article)
    euh ... aucun intérêt a encoder (mal en plus) une valeur si c'est pour la décoder juste après

    si tu veux que les balises soient prises en compte laisse ta variable comme elle est

    ps : profite en pour valide ta page w3c par ce que la : 9038 Errors, 23 warning(s) (la mise en page avec des tableaux ça se fait plus depuis longtemps)

  7. #7
    Débutant  
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Points : 217
    Points
    217
    Par défaut
    ok merci pour la réponse.
    Donc si je récupère la variable comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $article               = _POST['article'];
    ca ne sert à rien que je fasse :
    et
    Mais il est probable que le texte contienne des sauts à la ligne, comme des poemes par exemple:

    AAAAA
    BBBBBBBB
    CCCCCCCC

    ou des caractères spéciaux: ~{{[|`\^@....

    C'est pour cette raison que je doute que laisser la variable telle quelle, ca fonctionne.


    merci

  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 726
    Points
    10 726
    Par défaut
    si y'a des saut de lignes fait juste un nl2br pour les caractères spéciaux c'est pas grave

    ps : oublie pas de valider ta page c'est très important, surtout avec un nombre élevé d'erreur

  9. #9
    Débutant  
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Points : 217
    Points
    217
    Par défaut
    si y'a des saut de lignes fait juste un nl2br pour les caractères spéciaux c'est pas grave
    ok
    je regarderai. Et pour les caractères comme les symboles grecs, les trucs dans ce style ?

    ps : oublie pas de valider ta page c'est très important, surtout avec un nombre élevé d'erreur
    T'as raison, mais qu'est ce que cela peut faire qu'il y ait un nombre élevé d'erreurs?
    j'ai regardé, ca passe dans chrome, firefox, safari, IE...

  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 726
    Points
    10 726
    Par défaut
    Citation Envoyé par deubelte Voir le message
    ok
    je regarderai. Et pour les caractères comme les symboles grecs, les trucs dans ce style ?
    si t'es en UTF-8 y'a pas de problème

    Citation Envoyé par deubelte Voir le message
    T'as raison, mais qu'est ce que cela peut faire qu'il y ait un nombre élevé d'erreurs?
    j'ai regardé, ca passe dans chrome, firefox, safari, IE...
    normale le navigateur essaye de corriger les erreurs pour affiché les pages au mieux, mais ça prend beaucoup de ressource,
    pour corrigé tes erreurs corrige ton code, tu doit avoir des balise mal fermé, regarde dans le validateur

    http://validator.w3.org/

  11. #11
    Débutant  
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Points : 217
    Points
    217
    Par défaut
    ok.

    Sais tu s'il y a un nombre maximum d'erreur au dela duquel il ne charge pas la page?

  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 726
    Points
    10 726
    Par défaut
    Citation Envoyé par deubelte Voir le message
    ok.

    Sais tu s'il y a un nombre maximum d'erreur au dela duquel il ne charge pas la page?
    y'a pas de max d'erreurs

    le problème est que tes lien (<a>) doivent être dans le une balise de conteneur

    pourquoi ne pas avoir fait simple une liste type <ol> ?
    montre ton code PHP qui génère cette page

  13. #13
    Débutant  
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Points : 217
    Points
    217
    Par défaut
    pourquoi ne pas avoir fait simple une liste type <ol> ?
    montre ton code PHP qui génère cette page
    En fait, c'est un vieux truc. Alors faut faire les modifs à la main.
    Mais bon, merci pour le conseil.

  14. #14
    Débutant  
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Points : 217
    Points
    217
    Par défaut
    Je viens de tester, avec nb2br, ca marche bien. Mais en revanche, j'ai
    toujours ces \ avant et après les ".
    Comme le montre l'exemple suivant:

    http://www.lygeros.org/lygeros/9000-fr.html

  15. #15
    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 726
    Points
    10 726
    Par défaut
    c'est parce que tu dois avoir les magic quotes d'activé
    http://php.net/manual/fr/security.magicquotes.php

  16. #16
    Débutant  
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Points : 217
    Points
    217
    Par défaut
    Quand j'ouvre la page envoyée, j'ai:

    Cette fonctionnalité est OBSOLETE depuis PHP 5.3.0. Nous vous encourageons vivement à ne plus l'utilisé
    Maintenant, quand j'ouvre la page info.php de mon site, j'ai:

    PHP Version 4.4.9-1.standard
    mais ici, j'ai:

    magic_quotes_gpc On On
    magic_quotes_runtime Off Off
    magic_quotes_sybase Off Off

    On voit que c'est à On. Peut-etre est-ce cela??

  17. #17
    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 726
    Points
    10 726
    Par défaut
    oui ça doit être a sur Off, regarde dans la FAQ de ton herbergeur, pour changer tout ça et au passage mettre une version plus récente de PHP

  18. #18
    Débutant  
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Points : 217
    Points
    217
    Par défaut
    oui ça doit être a sur Off, regarde dans la FAQ de ton herbergeur, pour changer tout ça et au passage mettre une version plus récente de PHP
    ah oui, ca j'aimerais bien Comment tu fais pour changer la version de php?

  19. #19
    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 726
    Points
    10 726
    Par défaut
    Citation Envoyé par deubelte Voir le message
    ah oui, ca j'aimerais bien Comment tu fais pour changer la version de php?
    je viens de le dire plus haut

    Citation Envoyé par stealth35
    regarde dans la FAQ de ton herbergeur

Discussions similaires

  1. [Mail] Pb avec balise HTML dans PHP
    Par dionysos73 dans le forum Langage
    Réponses: 2
    Dernier message: 07/03/2007, 15h37
  2. [PHP-JS] caractères html/php
    Par zelkin dans le forum Langage
    Réponses: 3
    Dernier message: 27/11/2006, 20h42
  3. [XSLT][PHP]conversion balise html
    Par abdoulax dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 11/10/2006, 11h34
  4. [FLASH MX2004] Balises HTML dans mysql et PHP
    Par Garra dans le forum Flash
    Réponses: 3
    Dernier message: 06/04/2006, 11h46
  5. balise html et php en vue d'une visionneuse
    Par @ngelofdeath dans le forum Langage
    Réponses: 2
    Dernier message: 19/12/2005, 20h19

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