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 :

htmlspecialchars()


Sujet :

Langage PHP

  1. #1
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut htmlspecialchars()
    Salut,
    J'ai une chaine:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $chaine .= '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</select>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>\r\n&nbsp;&nbsp;&nbsp;</tr>\r\n';
    Cette chaine je veux l'afficher normalement en html avec les < et > donc je fais un echo htmlspecialchars($chaine, ENT_QUOTES);
    Le problème, c'est que les & sont traduits, et donc lmes espaces ne sont pas pris en compte... Idem pour les saut de lignes \r\n ça ne fonctionne pas.

    Comment résoudre ça?
    Merci

  2. #2
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    Je ne suis pas sur de comprendre, ta chaine est déjà de l'html, tu n'a pas pas besoin d'utiliser htmlspecialchars...

    Mais peut être que j'ai rien compris

  3. #3
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 208
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 208
    Points : 8 435
    Points
    8 435
    Billets dans le blog
    17
    Par défaut
    Pareil que GregPeck
    Et pour les retours à la ligne, en HTML c'est <br>.

  4. #4
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Imaginons une autre chaine:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $chaine = '<font color="red">Rouge</font>&nbsp;&nbsp;2 espaces';
    Si je fais un echo $chaine; ile va me retourner à l'affichage:

    Rouge 2 espaces
    Mais moi je voudrais qu'il me retourne à l'affichage:

    <font color="red">Rouge</font> 2 espaces
    Si je fais un htmlspecialchars, les espaces ne fonctionneront pas il y aura &nbsp; ...

    Vous avez compris?
    Comment faire?

  5. #5
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str_replace('&nbsp;', ' ', $chaine)

  6. #6
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Comment tu dis
    Et comment tu expliques que les \r\n ne soient pas pris en compte?
    Merci à vous

  7. #7
    Membre actif
    Homme Profil pro
    PDG
    Inscrit en
    Septembre 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : PDG
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Septembre 2005
    Messages : 101
    Points : 225
    Points
    225
    Par défaut
    Les \r\n (ou \n mais je crois que ça dépend si c'est Windows ou Linux, à confirmer) c'est pour l'affichage en mode texte, par exemple quand tu fais "Code source de la page".
    En HTML c'est <br>, et en XHTML (si je ne me trompe pas), c'est <br />

  8. #8
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Citation Envoyé par dasdeb
    Les \r\n (ou \n mais je crois que ça dépend si c'est Windows ou Linux, à confirmer) c'est pour l'affichage en mode texte, par exemple quand tu fais "Code source de la page".
    En HTML c'est <br>, et en XHTML (si je ne me trompe pas), c'est <br />
    +1, et autant mettre tout de suite <br /> meme en html

    Anduriel, pour tes \r\n => nl2br

  9. #9
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Finalement j'ai pris ta méthode: j'ai mis normalement des <br> puis j'ai fais htmlspecialchars ramplaçant les < et > Ensuite j'ai fait un replace #iso par < et >

    Merci à toi

  10. #10
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Tu as résolu ?
    Comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nl2br(htmlspecialchars(str_replace('&nbsp;', ' ', $chaine)));

  11. #11
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return str_replace(array("&amp;#160;", "&lt;br&gt;", "[SPAN]", "[/SPAN]"), array(" ", "<br>", "<span id='code'>", "</span>"), htmlspecialchars($chaine, ENT_QUOTES));
    On va pas dire que c'est extrêmement propre mais bon

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

Discussions similaires

  1. [Smarty] Problème sous Smarty : htmlspecialchars ou htmlentities
    Par harlock59 dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 12/05/2006, 14h57
  2. fonction htmlspecialchars
    Par Seth77 dans le forum Langage
    Réponses: 3
    Dernier message: 22/02/2006, 21h51
  3. Réponses: 7
    Dernier message: 24/09/2005, 13h30
  4. Réponses: 1
    Dernier message: 04/04/2005, 16h16

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