Citas simples y dobles juntas como valor de atributo HTML?

Tenemos un código como este:

echo ''; 

Absolutamente no funciona porque la cita después del Double finaliza el valor. Podemos solucionarlo mediante el uso de comillas simples en lugar de dobles.

 echo ''; 

Ahora quiero usar comillas simples y dobles como valor. Debería tener resultados She said:"I don't know."

¿Hay alguna manera de solucionarlo SIN utilizar entidades HTML (Me gusta " ), htmlentities() o funciones similares?

¿Hay alguna manera de solucionarlo SIN utilizar entidades HTML (Me gusta " ), htmlentities() o funciones similares?

No no hay. La comilla doble ( " ) tiene un significado especial dentro de un atributo de HTML. Si desea ponerlo en un valor de atributo, debe (esto no es una verdadera obligación sino una buena regla de oro. Es imprescindible si usa atributos delimitados por comillas dobles como lo hace en su pregunta) escríbalo como su entidad " No hay forma de evitarlo.

En realidad, incluso no está mal HTML, y la mayoría de los navegadores pueden lidiar con eso. Sin embargo, no te ayuda porque estás buscando tanto comillas simples como dobles y una de estas siempre en HTML es un delimitador del valor del atributo, si necesita espacios dentro del valor del atributo (como lo hace).

Sin embargo, no te preocupes por eso. Funciona, y puede express todo lo que quiera con eso, incluida la combinación de citas que tiene.

Y en realidad, PHP está ahí para que tomes la carga de “escapar” a todos esos personajes solo con el método htmlspecialchars haciendo todo el trabajo por ti. Dentro de una cadena de PHP tiene el texto original, con comillas simples y dobles, como usted lo ve, literalmente.

 $myString = 'She said: "I don\'t know."'; printf('' , htmlspecialchars($myString)); 

Solo un ejemplo abreviado que debería demostrar cómo funciona esto. Demostración en línea .

Para abordar la pregunta en el título, no hay problema con el uso de “y” en un valor de atributo. El problema surge en la linealización de valores, es decir, escribirlos en HTML (como opuesto a generarlos con JavaScript del lado del cliente). Entonces, si el valor contiene “y”, cualquiera de ellos debe ser escapado, dependiendo de cuál use como delimitador de valor.

Sin embargo, no necesita usar referencias de entidades. El personaje hace referencia a " y ' (o las referencias decimales equivalentes) se pueden usar también.

En el caso de la cadena

Ella dijo: “No sé”.

la ortografía correcta en inglés es

Ella dijo: “No sé”.

Al usar los signos de puntuación correctos, no aparece ningún problema de marcado, ya que puede utilizar las comillas de Ascii “o el apóstrofo de Ascii como delimitador. Están pensados ​​para su uso en lenguajes de computadora, no en idiomas humanos.

En general, no puedes hacer eso. A pesar de que no especificó qué versión HTML está utilizando. Pero aquí hay una buena documentación:

http://www.w3.org/TR/html-markup/syntax.html#attribute

A partir de esta descripción, es muy claro que en algunos casos debe usar secuencias de escape.