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

Résolu
Fricky42 Messages postés 466 Date d'inscription   Statut Membre Dernière intervention   -  
Fricky42 Messages postés 466 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   40
 
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   Statut Membre Dernière intervention   182
 
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   Statut Membre Dernière intervention   40
 
`` => 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   Statut Membre Dernière intervention   182
 
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   Statut Membre Dernière intervention   40
 
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   Statut Membre Dernière intervention   182
 
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