238 votes

Comment puis-je échapper à un guillemet simple ?

Comment puis-je échapper à un ' (guillemets simples) en HTML ?

C'est là que j'essaie de l'utiliser :

<input type='text' id='abc' value='hel'lo'>

Le résultat du code ci-dessus est "hel" dans la zone de texte. J'ai essayé de remplacer ' avec \' mais c'est ce que j'obtiens.

<input type='text' id='abc' value='hel\'lo'>

Le résultat du code ci-dessus est "hel" dans la zone de texte.

Comment puis-je réussir à échapper aux guillemets simples ?

0 votes

Ravi, il s'agit plutôt d'une question sur le langage HTML. J'ai retaggé la question en tant que HTML, mais tu pourrais vouloir changer cela dans ta question.

427voto

Pascal MARTIN Points 195780

Vous pourriez utiliser des entités HTML :

  • &#39; pour '
  • &#34; pour "
  • ...

Pour en savoir plus, vous pouvez consulter le site _Références aux entités de caractères en HTML_ .

42 votes

Pourquoi devrait faut-il utiliser des guillemets doubles pour les valeurs d'attributs ?

0 votes

Aahhhh !!.. Je ne peux même pas penser à ça. Merci beaucoup. :)

0 votes

HUmph ; je suppose que je devrait ont dit pourrait car il est utile, dans ce cas précis, mais pas nécessairement nécessaire ; toutefois, une (à mon avis) Une bonne raison serait qu'il est plus proche du XHTML.

76voto

Benjamin Manns Points 3689

Vous pouvez utiliser &apos; (ce qui n'est pas évident dans IE) ou &#39; (qui devrait fonctionner partout). Pour une liste complète, voir le Références des caractères nommés du W3C HTML5 ou le Table des entités HTML sur WebPlatform.org .

0 votes

Wow, ça fait longtemps que je n'ai pas écrit ceci. Merci de l'avoir remarqué - j'ai mis à jour les liens vers deux tableaux sur W3C et WebPlatform.org.

0 votes

Ceux-ci fonctionnent "partout", sauf dans les attributs d'expression VXML <var> où un échappement supplémentaire est nécessaire puisque dans VXML <var>, une valeur de variable String est indiquée comme des guillemets simples à l'intérieur des guillemets doubles normaux des définitions d'attributs : <var name="myvar" expr="'hel\'lo'" />

10voto

Gumbo Points 279147

Comme vous êtes dans le contexte du HTML, vous devez utiliser le HTML pour représenter ce caractère. Et pour le HTML, vous devez utiliser un référence à un caractère numérique &#39; ( &#x27; hexadécimale) :

<input type='text' id='abc' value='hel&#39;lo'>

0 votes

Mais je n'ai pas compris ce que vous voulez dire par context of html ?

0 votes

@coding_idiot Jetez un coup d'oeil aux différentes Les tokens qu'un analyseur HTML peut rencontrer au cours du processus d'analyse. . Chaque état possède un ensemble différent de règles d'analyse qui sont déclenchées en fonction de l'entrée. Tous les états n'autorisent pas les références de caractères. Maintenant, si vous regardez le valeur de l'attribut (entre guillemets) vous pouvez voir qu'une & indique le début d'une référence de caractère.

8voto

AndiDog Points 28417

Le représenter comme une entité textuelle (ASCII 39) :

<input type='text' id='abc' value='hel&#39;lo'>

2voto

mauris Points 19666

Vous avez entendu parler de la double évasion ? Mon préféré :

var str = "<input type='text' id='abc' value='hel\\\'lo'>";

ou

var str = "<input type="text" id="abc" value="hel'lo">';

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