Bien, como sabemos hay 2 tipos de comillas básicas para cualquier (o la mayoría) de los lenguajes de programación, las simples y sencillas ' y las dobles ".
Como también debemos saber, estas comillas sirven obligatoriamente para encerrar cadenas de texto para ser utilizadas, no es tan difícil... verdad?
Ahora, ¿que pasa si rodeamos con comillas una variable?
Dependiendo del lenguaje, en este caso PHP, las sencillas
NO evalúan el contenido en la cadena... pero las dobles SI que lo hacen.
Si solo voy a imprimir UNA SOLA variable, ¿necesito ponerle comillas dobles?
NOOOOOOO... esto no esta mal, pero tampoco esta BIEN... ya que siendo una sola variable NO es necesario rodearle con comillas dobles (de evaluación)
Entonces, si yo he oído que debes encapsular las variables en las cadenas ¿por que es esto?
..bueno, ese también es otro problema sencillo... aunque pocas veces dominado.
Si tenemos un objeto, o arreglo... y necesitamos incluirlo en una cadena para que se evalúe junto a demás texto NECESITA ser encapsulado en caracteres de llave...
ejs.
Código PHP:
print "Cadena evaluada {$de['ejemplo']} ...OK";
print "Cadena evaluada ".$de['ejemplo']." ...OK";
print 'Cadena evaluada ' . $de["ejemplo"] . '...OK';
print sprintf("Cadena evaluada %s ...OK", $de['ejemplo']);
TODOS estos ejemplos (e incluso mas) son totalmente validos e idénticos!!!
Gracias, y ahora... si necesito imprimir comillas dentro de las comillas ¿que debo hacer?
Primero, relájate y decide que tipo de comillas son MAS importantes para el problema en cuestión... y si es que necesitas realmente evaluar alguna variable dentro de la cadena.
Una ves hecho esto todo se tornara mas fácil, ej.
"
Necesito imprimir un cadena de texto, dentro de un alert() en el evento onclick de un enlace <a>"
Ahora, elegiremos (por ejemplo) las comillas sencillas para rodear TODA la cadena... ya que son las que menos usaremos dentro de la cadena (recordando que para el
HTML... DEBEMOS usar comillas dobles para los atributos)
Entonces, quedaria algo asi....
Código PHP:
print '<a href="#" onclick="alert(\'' . add_slashes($cadena) . '\')">Enlace</a>';
// ahora usemos comillas dobles...
print "<a href=\"#\" onclick=\"alert('{$cadenas->test}')\">Enlace</a>";
// sprintf()
print sprintf('<a href="#" onclick="alert(\'%s\')">Enlace</a>', add_slashes($cadena));
También, recordando que debemos escapar las comillas y caracteres de control, como la diagonal invertida cuando usamos caracteres especiales en la cadena a utilizar...
suerte!!