Pregunta

<?php echo ($i % 6 == 5) ? 'style=\"margin-right:0px\"' : ''; ?>

Acabo de imprimir style="" en el puerto de visualización.

Actualizar:¿Por qué no es necesario escapar de las comillas dobles cuando estamos dentro de una cadena?¿Porque las comillas dobles nunca se tomarán como algo más que una cadena, si están dentro de comillas simples?

Gracias de antemano, MEM

¿Fue útil?

Solución

¿Por qué no es necesario escapar de las comillas dobles cuando estamos dentro de una cadena?¿Porque las comillas dobles nunca se tomarán como algo más que una cadena, si están dentro de comillas simples?

El manual, con respecto a cadenas entre comillas simples:

Para especificar una comilla simple literal, escápela con una barra invertida (\).Para especificar una barra invertida literal, duplíquela (\\). Todas las demás instancias de barra invertida se tratarán como una barra invertida literal.:esto significa que las otras secuencias de escape a las que podría estar acostumbrado, como o , se generarán literalmente como se especifica en lugar de tener ningún significado especial.

Otros consejos

No hay necesidad de escapar comillas dobles dentro de comillas simples.

<?php echo ($i % 6 == 5) ? 'style="margin-right:0px"' : ''; ?>

Sólo tiene que escapar comillas simples dentro de comillas simples o dobles dentro de comillas dobles. Si desea escribir una comilla simple dentro de una sola cadena entre comillas, que comilla simple pondría fin a la cadena.

$foo = 'a'b';

PHP ve esto como la a cadena, seguido de un b sentido y el inicio de la cadena de '; que nunca se termina; la cual es una sintaxis no válida.

$foo = 'a\'b';

Esto se analiza correctamente como el a'b cadena. Usted tiene escapado el significado la cita por lo general tendría en este punto.

Con comillas dobles dentro de comillas simples, no hay tal ambigüedad. Una cita doble dentro de una sola cadena entre comillas no interrumpir la cadena, no tiene un significado tan especial que hay que necesitaría escapar. Si se incluye una barra invertida, la barra invertida se usa literalmente.

$foo = 'a"b';  // a"b
$foo = 'a\"b'; // a\"b

supongo que el problema es cómo nos fijamos en la salida. Si la salida es style=\"…\", el escaparon comillas dobles podrían causar una sintaxis no válida en el entorno en el que usted está buscando en la salida.

Se utiliza comillas simples ' para esa cadena, así escapar comillas dobles " dentro de la cadena es innecesaria. Reemplazar que con 'style="margin-right:0px"' y debería funcionar bien.

Para explicar cómo PHP controla cadenas y citas un poco mejor, es útil saber la diferencia entre ' y ". Cuerdas encapsuladas con ' siempre se muestran como está. Nada dentro de la serie se analiza, incluyendo los caracteres de escape (como \n para una nueva línea o comillas escapadas, excepto escapado \' comillas simples). Por el contrario, las cadenas de encapsulados en " se analizan, por lo que si tiene alguna caracteres de escape que se mostrarán correctamente, y si tiene alguna variables dentro de la cadena, que va a ser incorporada tan bien. Por ejemplo,

// Set name variable to my name
$name = "nhinkle";

// Echo hello name with single quotes
echo 'hello {$name}';
// The result will be "hello {$name}"

// Echo hello name with double quotes
echo "hello {$name}";
// The result will be "hello nhinkle"

Se necesita menos potencia de procesamiento para utilizar comillas simples, a partir de PHP no tendrá que escanear la cadena de escapar nada, sólo tiene que encontrar el final de la cadena. Sin embargo, si lo hace necesidad de análisis sintáctico cosas dentro de la cadena, asegúrese de usar comillas dobles.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top