[devweb] quote, double quote, et ???

Résolu/Fermé
Fricky42 Messages postés 466 Date d'inscription lundi 15 septembre 2008 Statut Membre Dernière intervention 27 mars 2012 - 21 nov. 2008 à 12:56
Fricky42 Messages postés 466 Date d'inscription lundi 15 septembre 2008 Statut Membre Dernière intervention 27 mars 2012 - 21 nov. 2008 à 14:01
Coucou tout le monde,

Voici un probleme en devweb (surtout en php) sur lequel je tombe souvent et qui fini pas mal par me gaver. Je n'ai encore trouvé aucune solution... Pour plus simplement expliquer ce probleme voici un exemple :

$str = "<div onmouseover='my_function()'>hello world</div>"


jusqu'ici, aucun probleme... Mais si je complique un peu la chose...

$str = "<div onmouseover='my_function("un_argument")'>hello world</div>"


Probleme : l'argument de my_function (qui est ici un string) ne peux pas utiliser ces doubles quotes car elles englobent deja le string $str. Idem pour les simple quote qui englobe le onmouseover.

Je ne cherche pas un regler le probleme pour cet exemple precis. Mais a savoir si il existe une methode pour venir a bout de ce probleme de facon general. Quand les doubles et simples quotes sont deja occupes...

Merci d'avoir prete attention =).
Bonne journee.
A voir également:

3 réponses

xxkirastarothxx Messages postés 380 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 22 mars 2013 40
21 nov. 2008 à 13:11
Met simplement un slashes devant tes quotes ;)
$str = "<div onmouseover='my_function(\"un_argument\")'>hello world</div>"

Il existe également le `` (altgr + 7) mais je l'ai jammais utilise pour du php, donc je sais pas si ça fonctionne,
En tout cas tu peux l'utiliser dans tes requêtes SQL (pour sélectionner les champs) ;)
0
Fricky42 Messages postés 466 Date d'inscription lundi 15 septembre 2008 Statut Membre Dernière intervention 27 mars 2012 182
21 nov. 2008 à 13:24
en php le magicquote ne marche pas non.

Et l'histoire des backslashes j'ai essaye ca ne marche pas... je donne l'exemple reel qui me pose actuellement probleme :

$text = "toto est trop sympa";
$str = "<b onmouseover=this.style.cursor='pointer' onclick=print_ib('" . $text . "');>toto</b>";


Si je met des espaces dans $text ca plante (car le onclick n'est pas encadré).

Si je l'encadre par des quote, et j'inhibe les quote du print_ib :

$text = "toto est trop sympa";
$str = "<b onmouseover=this.style.cursor='pointer' onclick='print_ib(\'" . $text . "\');'>toto</b>";


Ca ne marche toujours pas...
0
xxkirastarothxx Messages postés 380 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 22 mars 2013 40
21 nov. 2008 à 13:29
`` => aucun rapport avec le magicquote ;)
magicquote c'est une fonction apache (je crois apache) qui permet d'ajouter automatiquement des slashes devant les quotes.
www.phpfrance.com/tutoriaux/index.php/2005/04/17/29-les-magic-quotes

pour ton erreur:
$text = "toto est trop sympa";
$str = "<b onmouseover=this.style.cursor='pointer' onclick='print_ib(" . $text . ");'>toto</b>";

ou
$str = "<b onmouseover=this.style.cursor='pointer' onclick='print_ib(\"" . $text . "\");'>toto</b>";

devraient marché.
0
Fricky42 Messages postés 466 Date d'inscription lundi 15 septembre 2008 Statut Membre Dernière intervention 27 mars 2012 182
21 nov. 2008 à 13:40
le ` porte le nom de magic quote.

$text = "toto est trop sympa";
$str = "<b onmouseover=this.style.cursor='pointer' onclick='print_ib(" . $text . ");'>toto</b>"; 


Ne peux quoi qu'il arrive pas marcher car le HTML généré sera :
onclick='print_ib(toto est trop sympa)'
Alors pour passé un string dans la fonction js il faut l'encadrer (" ou ').

Quant a
$str = "<b onmouseover=this.style.cursor='pointer' onclick='print_ib(\"" . $text . "\");'>toto</b>"; 


Ca marche en effet ! Cependant si je change juste les " inhibées en ' inhibées... ca ne marche plus. C'est etonnant je suis curieux de comprendre.

Mais bref. Probleme resolu ^^. Merci
0
xxkirastarothxx Messages postés 380 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 22 mars 2013 40
21 nov. 2008 à 13:50
https://en.wikipedia.org/wiki/Magic_quotes

et

Introduction
Les magic-quotes sont deux options de PHP accessibles dans le php.ini et qui gèrent les chaines de caractères. Mais leur utilisation devient complètement anarchique et même dangereuse quand l'on ne sait pas s'en servir.


Je Confirme ce que j'ai dis sur les magics quote, je me trompe peu etre, personne n'est infaillible, mais je veux voir un doc qui le prouve ^^

Sinon essaye \' inhibées ;)
0
Fricky42 Messages postés 466 Date d'inscription lundi 15 septembre 2008 Statut Membre Dernière intervention 27 mars 2012 182
21 nov. 2008 à 14:01
Je n'ai jamais dit que ce n'etait pas une option php. Au contraire, c'est un abus de language (magicquote au lieu de backquote et antislash au lieu de backslash...)

Sinon essaye \' inhibées ;)
>> Comme je te l'ai dit ca ne marche pas, c'est etrange d'ailleurs.

0