Problème avec htmlspecialchars ou entities

arno911 Messages postés 57 Date d'inscription lundi 6 janvier 2003 Statut Membre Dernière intervention 15 janvier 2012 - 20 sept. 2007 à 18:01
arno911 Messages postés 57 Date d'inscription lundi 6 janvier 2003 Statut Membre Dernière intervention 15 janvier 2012 - 21 sept. 2007 à 16:45
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

Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
20 sept. 2007 à 19:07
Hello,

nl2br( ) pour les sauts de lignes.
Je ne comprends pas bien ton pb avec htmlspecialchars.
0
arno911 Messages postés 57 Date d'inscription lundi 6 janvier 2003 Statut Membre Dernière intervention 15 janvier 2012
20 sept. 2007 à 19:14
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.
0
arno911 Messages postés 57 Date d'inscription lundi 6 janvier 2003 Statut Membre Dernière intervention 15 janvier 2012
20 sept. 2007 à 19:26
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
0
arno911 Messages postés 57 Date d'inscription lundi 6 janvier 2003 Statut Membre Dernière intervention 15 janvier 2012
20 sept. 2007 à 19:44
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>";
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
20 sept. 2007 à 19:58
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.
0
arno911 Messages postés 57 Date d'inscription lundi 6 janvier 2003 Statut Membre Dernière intervention 15 janvier 2012
20 sept. 2007 à 20:01
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
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
20 sept. 2007 à 20:54
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.
0
arno911 Messages postés 57 Date d'inscription lundi 6 janvier 2003 Statut Membre Dernière intervention 15 janvier 2012
21 sept. 2007 à 11:12
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>
 
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
21 sept. 2007 à 11:53
t'as mis des virgules à la place de points-virgules
0
arno911 Messages postés 57 Date d'inscription lundi 6 janvier 2003 Statut Membre Dernière intervention 15 janvier 2012
21 sept. 2007 à 12:52
Ca fonctionne avec des virgules. Si je les remplace par des ; le résultat est le même...
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
21 sept. 2007 à 12:55
Ouvre sous Firefox et regarde la console de debuggage.
0
arno911 Messages postés 57 Date d'inscription lundi 6 janvier 2003 Statut Membre Dernière intervention 15 janvier 2012
21 sept. 2007 à 13:14
Je vais essayer je te tiens au courant. Merci de te pencher sur mon cas !
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
21 sept. 2007 à 13:30
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.
à+
0
arno911 Messages postés 57 Date d'inscription lundi 6 janvier 2003 Statut Membre Dernière intervention 15 janvier 2012
21 sept. 2007 à 13:30
Dans la console d'erreurs il me marque : missing ; before statement.
0
arno911 Messages postés 57 Date d'inscription lundi 6 janvier 2003 Statut Membre Dernière intervention 15 janvier 2012
21 sept. 2007 à 14:27
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é.
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
21 sept. 2007 à 15:33
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.
0
arno911 Messages postés 57 Date d'inscription lundi 6 janvier 2003 Statut Membre Dernière intervention 15 janvier 2012
21 sept. 2007 à 16:18
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.
0
arno911 Messages postés 57 Date d'inscription lundi 6 janvier 2003 Statut Membre Dernière intervention 15 janvier 2012
21 sept. 2007 à 16:30
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 ???
0
arno911 Messages postés 57 Date d'inscription lundi 6 janvier 2003 Statut Membre Dernière intervention 15 janvier 2012
21 sept. 2007 à 16:45
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...
0
Rejoignez-nous