2010-03-19 1 views
3

У меня возникла проблема. Я кодирую код, совместимый со стандартными стандартами, только для того, чтобы он терпел неудачу из-за амперсандов в некоторых URL-адресах гиперссылки.Амперсанды в гиперссылках вызывают валидацию W3C с ошибкой

Кто-нибудь знает о работе или взлометь для этого.

Благодаря

ответ

2

Вы должны URL Encode гиперссылки, поэтому все символы превращаются в действительный формат ASCII и не содержат никаких (X) объектов HTML.

Для C# используйте HttpUtility.UrlEncode, для PHP urlencode, для JavaScript encodeURI и т. Д. Поиск правильного метода для используемого вами языка не должен быть таким сложным.

+4

'htmlspecialchars' (http://php.net/manual/en/function.htmlspecialchars.php) на самом деле лучше, чем' urlencode' для этого. – ceejayoz

+4

... Я бы зашел так далеко, чтобы назвать это * необходимо *. 'urlencode()' - неправильный подход. Амперсанд имеет особое значение в URL-адресах (разделитель параметров GET) и 'urlencode()' будет * remove *, что означает их экранирование. Мы не хотим кодировать амперсанды в контексте URL. Мы хотим кодировать амперсанды в контексте HTML. 'htmlspecialchars()' делает это. – pinkgothic

5

ли вы сделать их & в ссылках, как это?

& 
12

Я код хорошие стандарты совместимый код только, чтобы он не из-за амперсанды в некоторых гиперссылок URLs.

Неэкранированные амперсанды в URL-адресов (или в другом месте, если они не являются частью HTML сущности!) не «код хороших соответствует стандартам».

Включите их в &, и вы можете точно заявить, что сделали это.

+0

Grammar Nazi:/заменить не с не –

+2

+1 Также хорошо знать: разоблачен '&' будет считаться недействительным * даже в блоках JavaScript *, если они не обернуты тегами CDATA. –

+0

Спасибо за ответы ребята. Кодирование URL является новым для меня, я изучаю его. Существует хорошая ссылка на страницу кодирования URL W3C, предоставленную Рональдом выше. –

-1

CDATA творит чудеса, где у вас есть & в JavaScript строки ..