2008-10-28 14 views
63

Recientemente he estado viendo mucho de esto:¿Es correcto usar comillas simples para los atributos HTML?

<a href='http://widget-site-example.com/example.html'> 
    <img src='http://widget-site-example.com/ross.jpg' alt='Ross&#39;s Widget' /> 
</a> 

¿Es válido usar comillas simples en HTML? Como he resaltado anteriormente, también es problemático porque tienes que escapar de los apóstrofes.

+4

El atributo alt debe tener ' en ella, no \' – Greg

+10

@ Greg: "El carácter comilla simple ('), cuando se utiliza para citar un valor de atributo, debe también ser escapado como ' o ' (En caso de no escaparon como ', excepto en documentos XHTML) cuando aparece dentro del valor del atributo en sí. " – aehlke

+0

@aehlke este comentario fue el elemento más útil en la página para mí. Apostrophes en una grilla generada por ASP.NET estaba obstruyendo mi javascript, los escapes que enumeró fueron muy útiles para resolver eso. Gracias. – CodexArcanum

Respuesta

48

Ciertamente es válido para usar comillas simples (HTML 4.01, section 3.2.2). No he notado tal tendencia, pero tal vez haya algún marco que impulse a los sitios web que ha visitado que pasan a cotizar usando comillas simples.

+0

Curiosamente, son principalmente sitios que ofrecen código externo; por ejemplo, una imagen de estadísticas para Ohloh o como en http://www.pushuptheweb.com/ – Ross

+2

HTML, no XHTML aunque –

+2

Las comillas simples son las predeterminadas en HAML (http://haml-lang.com). – brad

44

Creo que el uso de comillas simples es útil cuando se genera dinámicamente HTML utilizando un lenguaje de programación que utiliza literales de cadena de comillas dobles.

p. Ej.

String.Format("<a href='{0}'>{1}</a>", Url, Desc) 
+7

¿Qué? No te gusta String.Format ("{1}", Url, Desc) ??? = P – StingyJack

+0

String.Format (@ "{1}", URL, descripción) esto es lo que se podría considerar :) –

+5

o String.Format ("{1}", URL, descripción) – rizzle

12

Al utilizar PHP para generar HTML que puede ser más fácil de hacer algo como:

$html = "<img src='$url' />"; 

que la concatenación de una cadena con una variable con una cadena, como PHP analiza las variables en cadenas entre comillas dobles.

+0

También es más fácil que mirar $ html = ""; Como las comillas escapadas son fáciles de olvidar – Sekhat

+4

, en realidad puedes invertirla en php: $ html = ''; –

+13

@KevinLaity, al usar comillas simples en PHP, haría que $ url imprima como $ url, no los contenidos de la variable: http://php.net/manual/en/language.types.string.php – bradlis7

0

¿Qué hay en contra de las comillas simples?

Puede tener comillas sencillas/dobles en todo su código html sin ningún problema, siempre y cuando mantenga el mismo estilo de cotización dentro de las etiquetas actuales (muchos navegadores no se quejarán incluso sobre esto, y la validación solo lo quiere si comienza con una cita, termina con la misma, dentro de la misma propiedad)

¡Soporte gratuito a los estilos de cotización aleatorios! (yay; D)

3

Es más fácil cuando desea insertar comillas dobles.

+3

Lo mismo aplica si invierte completamente el escenario ... entonces no es una buena razón IMO –

+0

@ JoePhillips No siempre, algunos idiomas no le permiten simplemente 'revertir el escenario'. .NET, por ejemplo, solo permitirá que las cadenas se definan mediante comillas dobles. – krowe2

+0

@ krowe2 Esto es verdad. Pero si está almacenando javascript en cadenas de C#, probablemente esté haciendo todo tipo de cosas mal –

3

En ASP.NET, es más fácil de usar comillas simples si utiliza data-binding expressions de atributos:

<asp:TextBox runat="server" Text='<%# Bind("Name") %>' /> 
4

Alguien puede utilizarlo en PHP para evitar escape "si están usando cadena entre comillas dobles a analizar las variables dentro de ella, o para evitar el uso de operador de concatenación de cadenas

Ejemplo:.

echo "<input type='text' value='$data'/>"; 

en lugar de

echo "<input type=\"text\" value=\"$data\" />"; 

o

echo '<input type="text" value="' . $data . '" />'; 

Hoy en día siempre se adhieren a la utilización de comillas dobles para HTML y Javascript para comillas simples.

2

Las comillas simples son perfectamente legales en (X) HTML. Usar una barra invertida para escapar de ellos, por otro lado, no lo es. <img src=' http://widget-site-example.com/ross.jpg ' alt='Ross\'s Widget' /> es una imagen con el texto alt "Ross \", y atributos s y Widget/Widget' vacíos. La forma correcta de escapar de un apóstrofo en HTML es &#39;.

+1

Las comillas simples no son perfectamente legales en XHTML. –

+3

Las comillas simples son XHTML legales, ¿no es así? –

+0

d03boy: eso es incorrecto. – Ms2ger

2

En PHP, echo toma múltiples parámetros.Por lo tanto, si a uno le gustaría omitir el operador de concatenación, podrían hacer algo así y todavía utilizar comillas dobles:

echo '<input type="text" value="', $data, '" />'; 
+0

pero para cuando te des cuenta, ya has comenzado tu serie de eco con comillas dobles, por lo que solo debes usar sencillos dentro de la cadena. Eso me pasa a mi todo el tiempo. – DiegoDD

+0

Esto también es más eficiente con la memoria, ya que evita crear una nueva cadena. – Andrea

+0

Esto no parece responder a la pregunta en absoluto. – krowe2

1

Las comillas simples generan una página más limpio, con menos desorden. No deberías estar escapándolos en cadenas HTML y es tu elección la que debes usar ... mi preferencia son las comillas simples normalmente y si necesito incluir una comilla simple en la cadena (por ejemplo, como delimitadores para una cadena dentro de la cadena), Yo uso comillas dobles para un solo & para el otro.

0

Sé que este es un hilo viejo, pero sigue siendo muy relevante.

Si desea un control sobre las cotizaciones en el HTML generado, puede utilizar la función sprintf() en PHP (y llamadas similares disponibles en muchos otros idiomas):

$html = sprintf('<a href="%s">%s</a>', $url, $text); 

El uso de sprintf() permite que la cadena de formato de ser fácilmente modificable al recuperarlo de una base de datos o archivo de configuración, o a través de mecanismos de traducción.

Es muy fácil de leer, y permite comillas dobles o individuales en el HTML generado, con muy pocos cambios y nunca ningún escape:

$html = sprintf("<a href='%s'>%s</a>", $url, $text); 
0

Por qué no guardar presionando la claveSHIFT. Una menos pulsación de tecla para el mismo kilometraje.

+0

¡ja! La mejor razón general, lo he visto. –

-4

Debe evitar las citas por completo.

En su ejemplo, solo un atributo entre comillas realmente necesita citas.

<!-- best form --> 
<a href=http://widget-site-example.com/example.html> 
    <img src=http://widget-site-example.com/ross.jpg alt='Ross&#39;s Widget' /> 
</a> 

Si usted hace uso de comillas, no hay ninguna regla dura y rápida, pero he visto más comúnmente con comillas simples, comillas dobles en el interior si es necesario.

El uso de comillas dobles no aprobará algunos validadores.

+0

Se requieren cotizaciones para que el contenido sea válido [etiqueta: HTML] 4.01 – Eric

1

Si quieren el ser válida o entonces ambos o funcionará para los atributos. HTML 4 se puede validar aquí: https://validator.w3.org/

Si está supporting only modern browsers ( y superior), entonces usted puede utilizar la sintaxis que permite comillas simples, comillas dobles, ni comillas (siempre y cuando no hay caracteres especiales en los atributos 'valor). HTML5 se puede validar aquí: https://validator.w3.org/nu

0

Otro caso en el que es posible que desee utilizar comillas simples: el almacenamiento de datos JSON en los datos de atributos:

<tr data-info='{"test":true}'></tr> 

claves de objeto JSON deben estar entre comillas dobles, por lo que el propio atributo no puede .

Cuestiones relacionadas