it-roy-ru.com

Для чего используется & amp

Есть ли разница в поведении ниже URL.

Я не знаю, почему вставлен &, это имеет какое-то значение?

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

versus

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

& - это HTML для «начала ссылки на символ».

& - это ссылка на символ "Амперсанд".

&current; не является стандартной ссылкой на символ и поэтому является ошибкой (браузеры могут попытаться выполнить восстановление после ошибки, но вы не должны зависеть от этого).

Если вы используете символьную ссылку для реального символа (например, ™), тогда она (™) будет отображаться в URL-адресе вместо нужной вам строки.

(Обратите внимание, что в зависимости от используемой версии HTML, вам может потребоваться завершить ссылку на символ ;, поэтому &trade= будет обрабатываться как ™. HTML 4 позволяет пропустить его, если следующий символ не является Word символ (например, =), но некоторые браузеры (Hello Internet Explorer) имеют проблемы с этим).

82
Quentin

HTML не распознает &, но распознает &, потому что он = & в HTML

Я просмотрел этот пост, который кто-то сделал: http://www.webmasterworld.com/forum21/8851.htm

3
Samjus

Мой источник: http://htmlhelp.com/tools/validator/problems.html#amp

Другая распространенная ошибка возникает при включении URL, который содержит амперсанд ("&"):

Это неверно:

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

Объяснение: 

В этом примере генерируется ошибка для «раздела неизвестного объекта», поскольку предполагается, что "&" начинает ссылаться на сущность. Браузеры часто безопасно восстановиться после такого рода ошибок, но реальные проблемы возникают в некоторые случаи. В этом примере многие браузеры правильно конвертируют & copy = 3 на © = 3, что может привести к сбою ссылки. Так как ⟨это HTML для левого угла, некоторые браузеры также конвертируют & lang = en к 〈= en. И один старый браузер даже находит сущность §, преобразование & section = 2 в §ion = 2.

Таким образом, цель здесь - избежать проблем, когда вы пытаетесь подтвердить свой веб-сайт. Таким образом, вы должны заменить свои амперсанды на & при написании URL в вашей разметке.

Обратите внимание, что замена & на &amp; выполняется только при написании URL в HTML, где "&" - это специальный символ (вместе с «<» и «>»). Когда написать тот же URL в текстовом сообщении электронной почты или в месте на панели браузера вы должны использовать "&", а не "&amp;". С HTML, браузер переводит "&amp;" в "&", поэтому веб-сервер будет видеть только "&" а не "&amp;" в строке запроса.

Надеюсь это поможет : )

2
Jim

Это отличный пример. Когда &current анализируется в текстовый узел, он преобразуется в ¤t. При разборе на значение атрибута он анализируется как &current.

Если вы хотите &current в текстовом узле, вы должны написать &amp;current в вашей разметке.

С подробностями можно ознакомиться здесь: http://dev.w3.org/html5/spec/tokenization.html#consume-a-character-reference

0
Alohci