3 votes

Comment stocker une chaîne de caractères dans une variable JavaScript qui comporte des guillemets simples et des guillemets doubles ?

J'ai besoin de créer une variable stockant du contenu HTML généré dynamiquement. Le contenu HTML de la chaîne renvoyée par PHP peut comporter des guillemets simples ou doubles.

html_content=<?=$string;?>;

La chaîne peut comporter des guillemets doubles comme ceci :

<span id="something">something else</span>

ou des guillemets simples comme ceci :

<span id='something'>something else</span>

Ensuite, comment puis-je enregistrer correctement la chaîne de caractères en javascript ? Je ne peux pas utiliser de guillemets simples ou doubles.

2voto

Luka Points 1670

Vous pouvez sauvegarder ce type de chaîne en la modifiant du côté serveur avant la sortie, comme ceci :

html_content = "<?=addslashes($string);?>"

La méthode addslashes($string) échappe alors les guillemets doubles au moment de l'exécution avant de les transmettre à la variable JavaScript.

1voto

Cyde Weys Points 126

Vous pouvez toujours utiliser La fonction d'échappement de JavaScript pour sérialiser votre chaîne avant de la stocker. Ça va marcher.

Je pense que le plus gros problème ici, cependant, est que les guillemets simples ne sont pas valides de la façon dont vous essayez de les utiliser dans votre attribut id comme ça (selon la spécification HTML). Il doit toujours s'agir de guillemets doubles. Si le code dont cela provient n'est pas sous votre contrôle, alors il n'y a pas grand-chose que vous puissiez faire, c'est simplement cassé ; mais s'il est sous votre contrôle, vous devriez aussi le corriger.

0voto

Niet the Dark Absol Points 154811

Utilice json_encode pour passer presque toutes les variables de PHP à JavaScript.

html_content=<?=json_encode($string)?>;

Dans le cas d'une chaîne de caractères, il ajoutera automatiquement des guillemets et tout échappement nécessaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X