Comment stocker une chaîne dans une variable JavaScript qui possède des guillemets uniques et des guillemets doubles?

Je dois créer une variable stockant du contenu HTML généré dynamiquement. Le contenu html dans la chaîne renvoyée de PHP peut avoir des guillemets simples ou doubles.

html_content=<?=$string;?>; 

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

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

Ou des citations simples comme ceci:

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

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

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

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

La méthode addslashes($string) échapperait alors à toutes les guillemets à l'exécution avant de l'alimenter à la variable JavaScript.

Bien, vous pouvez toujours utiliser la fonction d'échappement de JavaScript pour sérialiser votre chaîne avant de la stocker. Cela fonctionnera.

Je pense que le plus gros problème ici, cependant, est que les citations simples ne sont pas valides comme vous essayez de les utiliser dans votre attribut id comme cela (selon la spécification HTML). Il doit toujours s'agir de guillemets doubles. Si le code de cette provenance n'est pas sous votre contrôle, il n'y a pas beaucoup que vous pouvez faire, c'est juste cassé; Mais si c'est sous votre contrôle, vous devriez le réparer également.

Utilisez json_encode pour passer presque n'importe quelle variable de PHP à JavaScript.

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

Dans le cas d'une chaîne, elle ajoutera automatiquement des citations et des échappements nécessaires.