Simple no es lo mismo que doble, por PHP

8 de March, 2009. Escrito por [Q]boss en Libros, PHP + MySQL, Recursos

Diferencias entre comillas simples y dobles en PHP

Pues llevaba yo varios días dando vueltas a en qué se diferenciaba un código que me permitía escribir saltos de línea en un fichero, con otro que no lo hacía. El tema estaba enfocado en el caracter (\n) que es el que se emplea para tal tarea.

La cuestión era que en dos lugares diferentes pero aparentemente iguales, el resultado era distinto… y no hay nada como buscar en inglés por google (qué lastima que sea así la cruda realidad) para dar con resultados mucho más prácticos.

Me entero que las comillas simples no son igual que las dobles (yo casi siempre usaba las simples para no tener conflictos con los atributos HTML, que en principio suelen escribirse con dobles), y que tienen diferencias que pueden afectar a los resultados, como ha sucedido en este caso.

La comilla simple (’) lo que hace es mostrar LITERALMENTE lo que hay entre su apertura y cierre como caracteres de texto. La comilla doble (”) no hace lo mismo, sino que lanza su interior como una cadena que puede contener caracteres que se transforman en otra cosa, es decir, no saca LITERALMENTE lo que hay en su interior.

La prueba, que un ‘\n’ no es un salto de línea, pero un “\n” sí lo es dentro de un fichero de texto.

El resultado a mi consulta aqui:
No es lo mismo simple que doble [EN]

Y de regalo un gran recurso que me acabo de encontrar para aprender PHP:
Practica PHP Programming Wiki [EN]

Comments

7 Responses to “Simple no es lo mismo que doble, por PHP”

  1. Joan Garnet on March 12th, 2009 12:22 pm

    $str = ‘no es’;
    echo “Como bien dices $str lo mismo :)”;

  2. [Q]boss on March 12th, 2009 12:30 pm

    Te veo lanzado cada dia más cerca de ser un auténtico ciborg XD primero la edad en binario, ahora comentarios en blogs programados en PHP… Joan tienes que venirte a Asturias a descansar un poquito :)

    Ya me podía volver loco… esto me pasa por andar repartiendo donde no me llaman…

    Nos vemos el lunes creo no? Abrazo!

  3. Joan Garnet on March 12th, 2009 12:34 pm

    Joan no está, soy su “él” digital :p
    Nos vemos el lunes Mr.Q :)

    Un abrazo!

  4. Tecnorama on March 22nd, 2009 7:04 pm

    Una prueba:

    $cadena1=”un texto”;
    $cadena2=”esto es ‘$cadena1′”;
    echo $cadena2;

    ¿Qué devolverá?

  5. [Q]boss on March 23rd, 2009 12:33 am

    esto es ‘un texto’

  6. Tecnorama on March 24th, 2009 1:09 pm

    Hay que añadir entonces que:
    no saca LITERALMENTE lo que hay en su interior incluido el contenido en comillas simples

    Ese pequeño añadido me tuvo la semana pasada haciendo el ridículo :)

  7. [Q]boss on March 24th, 2009 2:59 pm

    A mi personalmente no me mola que PHP permita esto:

    $test=” de”;
    echo “cadena$test prueba”;

    Me gustaría que obligara a usar operadores de concatenación, y el comportamiento del ejemplo que has puesto va más por ahi que por el hecho de respetar las comillas. Porque claro, mezclando comillas de diferentes tipos para evitar usar el slash la cosa aun se pone peor XD

Leave a Reply