2010-03-19 50 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()'将*移除*意味着通过转义它们。我们不想在URL上下文中编码&符号。我们想要在HTML上下文中编码&符号。 'htmlspecialchars()'做到了。 – pinkgothic

5

你让他们&在这样的链接?

& 
12

我的代码漂亮标准的代码只有把它失败中的一些超链接的URL,由于&符号。

转义的&符号在网址(或其他地方,如果他们不是一个HTML实体的一部分!)“好符合标准的代码”。

把它们变成&,你可以准确地声称做到了这一点。

+0

语法纳粹:/替换不符合不 –

+2

+1还不错知道:未屏蔽的'&'将计为无效*甚至在JavaScript块*中,除非它们被封装在'CDATA'标签中。 –

+0

谢谢你们的回复。网址编码对我来说是新的,我正在研究它。有一个很好的链接到上面Ronald提供的W3C URL编码页面。 –

-1

CDATA工作,你在JavaScript字符串有&奇迹..

相关问题