Wofür wird & amp verwendet?

105

Gibt es einen Unterschied im Verhalten der folgenden URL?

Ich weiß nicht, warum das &eingefügt wird, macht es einen Unterschied?

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

gegen

www.testurl.com/test?param1=test&current=true
blauer Himmel
quelle
1
Verwandte: Muss ich wirklich als Verstärker codieren?
Charles Sprayberry
1
Können Sie einen Kontext angeben? Ist das in einer Form Aktion? Nur auf einer Seite angezeigt?
Jprofitt
@ user470184 Ich habe nicht abgelehnt, aber darüber nachgedacht. Zu diesem Thema gibt es bereits eine Menge Informationen zu SO.
Charles Sprayberry
"Generisches Verhalten" ist immer noch ziemlich vage. Wundern Sie sich über so etwas wie <p>www.testurl.com/test?param1=test&amp;current=true</p>oder <a href="www.testurl.com/test?param1=test&amp;current=true">linky</a>?
Jprofitt
@ jprofitt <a href="www.testurl.com/test?param1=test&current=true"> linky </a>
blauer Himmel

Antworten:

125

& ist HTML für "Start einer Zeichenreferenz".

&amp; ist die Zeichenreferenz für "Ein kaufmännisches Und".

&current; ist keine Standardzeichenreferenz und stellt auch einen Fehler dar (Browser versuchen möglicherweise, eine Fehlerbehebung durchzuführen, aber Sie sollten sich nicht darauf verlassen).

Wenn Sie eine Zeichenreferenz für ein reales Zeichen (z. B. &trade;) verwendet haben, wird diese (™) in der URL anstelle der gewünschten Zeichenfolge angezeigt.

(Beachten Sie, dass Sie abhängig von der von Ihnen verwendeten HTML-Version möglicherweise eine Zeichenreferenz mit a beenden müssen, ;weshalb &trade=sie als ™ behandelt wird. HTML 4 ermöglicht das Auslassen, wenn das nächste Zeichen ein Nicht-Wort-Zeichen ist ( wie =), aber einige Browser (Hello Internet Explorer) haben Probleme damit).

QUentin
quelle
5

Meine Quelle: http://htmlhelp.com/tools/validator/problems.html#amp

Ein weiterer häufiger Fehler tritt auf, wenn eine URL eingefügt wird, die ein kaufmännisches Und ("&") enthält:

Dies ist ungültig:

a href = "foo.cgi? kapitel = 1 & section = 2 & copy = 3 & lang = en"

Erläuterung:

In diesem Beispiel wird ein Fehler für "Abschnitt mit unbekannter Entität" generiert, da "&"davon ausgegangen wird, dass mit einer Entitätsreferenz begonnen wird. Browser können diese Art von Fehlern häufig sicher beheben, in einigen Fällen treten jedoch echte Probleme auf. In diesem Beispiel konvertieren viele Browser & copy = 3 korrekt in © = 3, was dazu führen kann, dass die Verknüpfung fehlschlägt. Da ⟨die HTML-Entität für die nach links zeigende spitze Klammer ist, konvertieren einige Browser auch & lang = en in 〈= en. Und ein alter Browser findet sogar die Entität § und konvertiert & section = 2 in §ion = 2.

Das Ziel hier ist es also, Probleme zu vermeiden, wenn Sie versuchen, Ihre Website zu validieren. Sie sollten also Ihr kaufmännisches Und ersetzen, &amp;wenn Sie eine URL in Ihr Markup schreiben.

Beachten Sie, dass das Ersetzen &durch &amp; wird nur ausgeführt, wenn die URL in HTML geschrieben wird, wobei "&"ein Sonderzeichen (zusammen mit "<" und ">") steht. Wenn Sie dieselbe URL in eine Nur-Text-E-Mail-Nachricht oder in die Adressleiste Ihres Browsers schreiben, würden Sie diese verwenden "&"und nicht "&amp;". Bei HTML übersetzt der Browser so "&amp;", "&"dass der Webserver nur die Abfragezeichenfolge der Anforderung sieht "&" und nicht "&amp;".

Hoffe das hilft : )

Jim
quelle
0

Das ist ein gutes Beispiel. Wenn &currentes in einen Textknoten analysiert wird, wird es in konvertiert ¤t. Wenn es in einen Attributwert analysiert wird , wird es als analysiert &current.

Wenn Sie &currentin einem Textknoten möchten , sollten Sie &amp;currentin Ihr Markup schreiben .

Die wichtigsten Details finden Sie hier: http://dev.w3.org/html5/spec/tokenization.html#consume-a-character-reference

Alohci
quelle
-2

wenn Sie eine Zeichenfolge machen. machen:

let linkGoogle = 'https://www.google.com/maps/dir/?api=1'; 
let origin = '&origin=' + locations[0][1] + ',' + locations[0][2];


aNav.href = linkGoogle + origin;
Urbanek Krzysztof
quelle
1
Die Frage bezieht sich &ampauf HTML, nicht &auf URLs.
Quentin