为HTML属性使用单引号是否正确?
最近我已经看到很多这样的:
<a href='http://widget-site-example.com/example.html'> <img src='http://widget-site-example.com/ross.jpg' alt='Ross's Widget' /> </a>
在HTML中使用单引号是否有效? 正如我上面强调,这也是有问题的,因为你必须逃避撇号。
使用单引号当然是有效的( HTML 4.01,第3.2.2节 )。 我没有注意到这样的趋势,但也许有一些框架,强大的网站,你访问了恰好用单引号引用。
当使用双引号string文字的编程语言dynamic生成HTML时,我发现使用单引号是很方便的。
例如
String.Format("<a href='{0}'>{1}</a>", Url, Desc)
使用PHP生成HTML时,可以更容易地执行如下操作:
$html = "<img src='$url' />";
而不是用一个string连接一个string与一个variables,因为PHP分析双引号string中的variables。
有人可能会在PHP中使用它来避免“如果它们使用双引号string来parsing其中的variables,或避免使用string连接运算符。
例:
echo "<input type='text' value='$data'/>";
代替
echo "<input type=\"text\" value=\"$data\" />";
要么
echo '<input type="text" value="' . $data . '" />';
现在我总是坚持使用HTML的双引号和Javascript的单引号。
当你想embedded双引号时更容易。
在ASP.NET中,如果在属性中使用数据绑定expression式 ,则使用单引号会更容易:
<asp:TextBox runat="server" Text='<%# Bind("Name") %>' />
(X)HTML中的单引号是完全合法的。 另一方面,使用反斜杠来转义它们不是。 <img src=' http://widget-site-example.com/ross.jpg ' alt='Ross\'s Widget' />
是一个带有alt文本“Ross \”的图像,空的s
和Widget
/ Widget'
属性。 在HTML中转义撇号的正确方法是'
。
在PHP中,echo使用多个参数。 所以,如果想省略连接运算符,他们可以做些类似的事情,而且仍然使用双引号:
echo '<input type="text" value="', $data, '" />';
单引号生成一个更干净的页面,更less的混乱。 你不应该在HTMLstring中转义它们,这是你的select使用…我的首选项通常是单引号,如果我需要在string中包含单引号(例如作为string内的string的分隔符),我用双引号为单一的另一个。
如果你想要html是有效的html4或xhtml,那么单引号或双引号将适用于属性。 HTML4可以在这里validation: https : //validator.w3.org/
如果您仅支持现代浏览器 ( 即10或更高版本),则可以使用允许使用单引号,双引号和无引号(只要属性值中没有特殊字符)的html5语法。 HTML5可以在这里validation: https : //validator.w3.org/nu
什么是反单引号?
只要你在当前标签中保持相同的引用风格(许多浏览器甚至不会抱怨这个,而validation只是想要,如果你从一个开始报价,以同样的规定结束)
免费支持随机引用样式! (耶; D)
我知道这是一个古老的线索,但仍然非常相关。
如果您想在生成的HTML中控制引号,则可以在PHP中使用sprintf()函数(以及许多其他语言中可用的类似调用):
$html = sprintf('<a href="%s">%s</a>', $url, $text);
使用sprintf()允许通过从数据库或configuration文件中检索格式string或通过翻译机制来轻松修改格式string。
这是非常可读的,并允许生成的HTML中的双引号或单引号,几乎没有任何变化,也没有任何转义:
$html = sprintf("<a href='%s'>%s</a>", $url, $text);
为什么不保存按SHIFT键。 less一个键盘敲击相同的青贮。
另一种情况,你可能想要使用单引号:在数据属性中存储JSON数据:
<tr data-info='{"test":true}'></tr>
JSON对象键必须用双引号,所以属性本身不能。
你应该完全避免报价。
在你的例子中,只有一个引用的属性实际上需要引号。
<!-- best form --> <a href=http://widget-site-example.com/example.html> <img src=http://widget-site-example.com/ross.jpg alt='Ross's Widget' /> </a>
如果你使用引号,没有硬性的规则,但我最常见的是单引号,如果有必要的话在内部用双引号。
使用双引号不会通过一些validation器。