Problème avec htmlspecialchars ou entities

Signaler
Messages postés
57
Date d'inscription
lundi 6 janvier 2003
Statut
Membre
Dernière intervention
15 janvier 2012
-
Messages postés
57
Date d'inscription
lundi 6 janvier 2003
Statut
Membre
Dernière intervention
15 janvier 2012
-
Bonjour à tous !

J'utilise htmlspecialchars avec l'argument ent_quotes pour convertir les guillemets simples et doubles d'un texte dans une table pour qu'il s'affiche sur ma page.
Cela fonctionne pour les guillemets simples mais pas pour les guillemets doubles qui sont pourtant bien convertis en &quote; dans la source.
Cela plante aussi lorsque j'ai un saut de ligne dans le texte de ma table. Je fais du copier coller donc je colle également les sauts à la ligne. Comment les convertir également ?

D'avance merci pour vos réponses !

19 réponses

Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
Hello,

nl2br( ) pour les sauts de lignes.
Je ne comprends pas bien ton pb avec htmlspecialchars.
Messages postés
57
Date d'inscription
lundi 6 janvier 2003
Statut
Membre
Dernière intervention
15 janvier 2012

Je dois donc emboiter htmlspecialchars(nl2br(chaine)),ent_quotes) ? ça fonctionne ça ???

Moi non plus je comprends pas mon problème ! Tout me paraît correct le guillemet double " et convertit en " quand je regarde la source mais l'affichage ne fonctionne pas.
Messages postés
57
Date d'inscription
lundi 6 janvier 2003
Statut
Membre
Dernière intervention
15 janvier 2012

J'ai testé en fait il faut emboiter dans l'autre sens c'est à dire : nl2br(htmlspecialchars());
Sinon les < > sont aussi convertit. Par contre j'ai bien le code source qui m'affiche
sauf que cela ne s'affiche pas comme avec les doubles guillemets
Messages postés
57
Date d'inscription
lundi 6 janvier 2003
Statut
Membre
Dernière intervention
15 janvier 2012

Désolé pour les posts multiples (je ne vois pas la fonction "Edit")

Je précise que ma ligne de code contient pleins de guillemets double et simple c'est ce qui empèche surement le bon affichage... voici ma ligne :

echo "<tr style='cursor:pointer'><td bgcolor='#4D4D4D' onmouseover='document.getElementById("synopsis").innerHTML="".nl2br(htmlspecialchars("$row[5]",ENT_QUOTES))."",document.getElementById("titre").innerHTML="".$row[0]."",document.affiche.src="affiches/".$row[1].".jpg",this.style.backgroundColor="#666666"' onmouseout='this.style.backgroundColor="#4D4D4D"'>".$row[0]."</td></tr>";
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
Dis plutôt ce qui s'affiche à l'écran, ce sera plus clair.
Il faut savoir que Firefox ne montre pas la vraie source telle qu'il la reçoit.
Messages postés
57
Date d'inscription
lundi 6 janvier 2003
Statut
Membre
Dernière intervention
15 janvier 2012

Je n'ai pas d'erreur, le onmouseover n'a plus l'air de fonctionner et le texte qui devrait changer reste sur le précédent. J'utilise IE7
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
Affiche la source de la page telle que affichée stp.
Au passage tu échappe à l'envers... mets des ' à la place des " et réciproquement.
Messages postés
57
Date d'inscription
lundi 6 janvier 2003
Statut
Membre
Dernière intervention
15 janvier 2012

J'ai inversé les " et ' le problème est toujours là voici la source de la page c'est la partie en gras qui bug :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<head>
<title>Mes Films</title>
<link rel="stylesheet" type="text/css" href="main.css" />


<script type="text/javascript">
</script>


</head>



 <li>[index.php Accueil]</li>
    <li>[# Films A - Z]
 
 <li> ----
[# Action]</li>
 <li>[# Comédie]</li>
 <li>[# Drame]</li>
 </li>




  
  

      13 Fantômes

  
  
   ----

13 Fantômes,

----

28 jours plus tard,

  


  

  
  

  

</html>
 
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
t'as mis des virgules à la place de points-virgules
Messages postés
57
Date d'inscription
lundi 6 janvier 2003
Statut
Membre
Dernière intervention
15 janvier 2012

Ca fonctionne avec des virgules. Si je les remplace par des ; le résultat est le même...
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
Ouvre sous Firefox et regarde la console de debuggage.
Messages postés
57
Date d'inscription
lundi 6 janvier 2003
Statut
Membre
Dernière intervention
15 janvier 2012

Je vais essayer je te tiens au courant. Merci de te pencher sur mon cas !
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
Je t'en prie.
A priori je n'ai pas vu d'erreur dans le code que tu as montré, alors soit j'ai pas fait assez attention, soit l'erreur vient d'ailleurs.
Sinon tu devrais faire des fonctions à part, c'est sale de mettre plein de trucs directement dans les propriétés onclick et autres.
à+
Messages postés
57
Date d'inscription
lundi 6 janvier 2003
Statut
Membre
Dernière intervention
15 janvier 2012

Dans la console d'erreurs il me marque : missing ; before statement.
Messages postés
57
Date d'inscription
lundi 6 janvier 2003
Statut
Membre
Dernière intervention
15 janvier 2012

Je voulais le faire le onmouseover qui appelle une fonction qui fait tout ça sauf que ça bug aussi pour envoyer le $row[5] en paramètre dans la fonction. Donc je suis un peu bloqué.
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
C'est ce que je disais, pb de virgule / point-virgule... relis-toi...
tu peux aussi faire

function = ....
 blabla.innerHTLM = "kjjk"jkhljkhlij"jhklhiljh";
(mais pas onclick="ljkkl"jkjkhioj";)

bon, ça commence à me fatiguer ton histoire, surtout que ça doit être une erreur bête, donc concentre-toi un peu et tu devrais résoudre le pb.
Messages postés
57
Date d'inscription
lundi 6 janvier 2003
Statut
Membre
Dernière intervention
15 janvier 2012

J'ai réduit au max pour les tests voilà ce que ça donne le 1er qui n'a pas de balises br ou de &quot s'affiche dans l'emplacement le 2ème qui au contraire a ces balises ne fonctionne pas :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<head>
<title>Mes Films</title>
<link rel="stylesheet" type="text/css" href="main.css" />


<script type="text/javascript">
</script>


</head>



 <li>[index.php Accueil]</li>
    <li>[# Films A - Z]
 
 <li> ----
[# Action]</li>
 <li>[# Comédie]</li>
 <li>[# Drame]</li>
 </li>




  
  

      13 Fantômes

  
  
   ----

13 Fantômes,

----

28 jours plus tard,

  


  

  
  

  

</html>

C'est vrai que c'est peut-être tout con mais je trouve vraiment pas.
Messages postés
57
Date d'inscription
lundi 6 janvier 2003
Statut
Membre
Dernière intervention
15 janvier 2012

Je pense pas qu'il y ait d'erreur de , ; " '. C'est peut être innerHTML qui ne supporte pas les balises... Et dans ce cas comment puis-je faire ???
Messages postés
57
Date d'inscription
lundi 6 janvier 2003
Statut
Membre
Dernière intervention
15 janvier 2012

J'ai fais le test l'un après l'autre br &quot et &#039; et c'est le dernier qui n'est pas reconnu apparemment. Pourtant c'est la fonction htmlspecialchars qui me transforme ' en &#039; donc ça devrait exister...