web-dev-qa-db-fra.com

A quoi sert & amp

Existe-t-il une différence de comportement entre URL ci-dessous?.

Je ne sais pas pourquoi le & est inséré, cela fait-il une différence?

www.testurl.com/test?param1=test&current=true

versus

www.testurl.com/test?param1=test&current=true
63
blue-sky

& est HTML pour "Début de la référence d'un caractère".

& est la référence de caractère pour "Une esperluette".

&current; n'est pas une référence de caractère standard, donc une erreur (les navigateurs peuvent essayer d'effectuer une récupération après erreur mais vous ne devriez pas en dépendre).

Si vous utilisez une référence de caractère pour un caractère réel (par exemple, ™), il apparaîtra (™) dans l'URL au lieu de la chaîne souhaitée.

(Notez qu'en fonction de la version de HTML que vous utilisez, vous devrez peut-être terminer un caractère par ;, raison pour laquelle &trade= sera traité comme ™. HTML 4 autorise sa suppression si le caractère suivant est un mot non Word caractère (tel que =), mais certains navigateurs (Hello Internet Explorer) ont des problèmes avec cela).

82
Quentin

Html ne reconnaît pas le & mais il reconnaîtra & car il = & in html

J'ai jeté un œil à ce message que quelqu'un avait publié: http://www.webmasterworld.com/forum21/8851.htm

3
Samjus

Ma source: http://htmlhelp.com/tools/validator/problems.html#amp

Une autre erreur courante se produit lors de l'inclusion d'une URL contenant un fichier esperluette ("&"):

Ceci est invalide:

un href = "foo.cgi? chapter = 1 & section = 2 & copy = 3 & lang = en"

Explication: 

Cet exemple génère une erreur pour "section d'entité inconnue" car le "&" est supposé commencer une référence d'entité. Navigateurs souvent résoudre ce problème en toute sécurité, mais de réels problèmes se produisent dans certains cas. Dans cet exemple, de nombreux navigateurs convertissent correctement & copy = 3 à © = 3, ce qui peut entraîner l'échec du lien. Puisque ⟨est le HTML entité pour le crochet d’angle pointant vers la gauche, certains navigateurs convertissent également & lang = en à 〈= en. Et un ancien navigateur trouve même l'entité §, convertir & section = 2 en §ion = 2.

L’objectif est donc d’éviter les problèmes lorsque vous essayez de valider votre site Web. Donc, vous devriez remplacer vos esperluettes par & lorsque vous écrivez une URL dans votre balise.

Notez que remplacer & par &amp; n'est fait que lors de l'écriture de l'URL dans HTML, où "&" est un caractère spécial (avec "<" et ">"). Quand écrire la même URL dans un message électronique en texte brut ou à l'emplacement la barre de votre navigateur, vous utiliseriez "&" et non "&amp;". Avec HTML, le navigateur convertit "&amp;" en "&" afin que le serveur Web ne voie que "&" et pas "&amp;" dans la chaîne de requête de la demande.

J'espère que cela t'aides : )

2
Jim

C'est un excellent exemple. Lorsque &current est analysé dans un nœud de texte, il est converti en ¤t. Lors de l'analyse dans une valeur d'attribut, celle-ci est analysée sous la forme &current.

Si vous voulez &current dans un nœud de texte, vous devez écrire &amp;current dans votre balisage.

Les détails sanglants sont ici: http://dev.w3.org/html5/spec/tokenization.html#consume-a-character-reference

0
Alohci