PHP: Comillas
En esta lección vamos a hablar sobre las cadenas de texto y por qué necesitamos comillas simples y dobles. También aprenderemos sobre las secuencias de escape y la concatenación.
¿Qué es una cadena de texto?
Cualquier carácter individual entre comillas es una cadena de texto. Por ejemplo:
'Hola'
'Adiós'
'G'
' '
''
Una cadena de texto vacía ''
también es una cadena de texto. Es decir, consideramos como cadena de texto todo lo que está dentro de las comillas, incluso si es un espacio, un solo carácter o la ausencia total de caracteres.
Anteriormente, en las lecciones, hemos escrito cadenas de texto entre comillas simples, pero también se pueden usar comillas dobles:
<?php
print_r("¡Dracarys!");
Veamos por qué hay dos formas de representar una cadena de texto.
¿Por qué necesitamos comillas dobles?
Supongamos que queremos imprimir la frase la madre del dragón
. El apóstrofe antes de la letra s es un carácter igual que una comilla simple. Intentemos:
<?php
print_r('La madre del dragón');
// Error de análisis de PHP: error de sintaxis, inesperado 's' (T_STRING), esperando ',' o ')'
Este programa no funcionará. Desde el punto de vista de PHP, la cadena de texto comenzó con una comilla simple y terminó después de la letra n. Luego hubo caracteres s mother
sin comillas, lo que significa que no es una cadena de texto. Y luego hubo una comilla de apertura de cadena que nunca se cerró: ');
. Este código es sintácticamente incorrecto.
Aquí es donde las comillas dobles nos ayudan. Esta versión del programa funcionará correctamente:
<?php
print_r("La madre del dragón");
Ahora el intérprete sabe que la cadena de texto comenzó con una comilla doble, por lo que debe terminar con una comilla doble. Y la comilla simple dentro de la cadena se convirtió en parte de la cadena.
Lo mismo ocurre al revés. Si queremos usar comillas dobles dentro de una cadena, debemos hacer la cadena en comillas simples. Y la cantidad de comillas dentro de la cadena no importa.
Ahora imaginemos que queremos crear esta cadena:
La madre del dragón dijo "No"
En esta cadena hay comillas simples y dobles. En esta situación, debemos indicarle al intérprete que cada comilla debe considerarse parte de la cadena, no como el inicio o el final.
Para esto, escapamos los caracteres especiales. En nuestro caso, el carácter que indica el final y el inicio de la cadena, ya sea una comilla simple o doble, dependiendo de la situación. Para escapar un carácter, usamos una barra invertida \
.
<?php
// Solo se escapa ", ya que en esta situación
// las comillas dobles tienen un significado especial
print_r("La madre del dragón dijo \"No\"");
// => La madre del dragón dijo "No"
Tuvimos que agregar \
para las comillas dobles, pero no para el apóstrofe, porque la cadena misma se creó con comillas dobles. Si la cadena se hubiera creado con comillas simples, entonces se necesitaría un carácter de escape antes del apóstrofe, pero no antes de las comillas dobles.
<?php
// \ se muestra si después de él viene un carácter normal,
// no un carácter especial
print_r("La muerte es \tan terriblemente final");
// => La muerte es \tan terriblemente final
También puede ser necesario imprimir la barra invertida en sí:
<?php
print_r("\\");
// => \
Esto también se puede hacer escapando la barra invertida.
Tarea
Escribe un programa que muestre en la pantalla:
"Khal Drogo's favorite word is "athjahakar""
El programa debe mostrar exactamente esta frase en la pantalla. Presta atención a las comillas al principio y al final de la frase:
"Khal Drogo's favorite word is "athjahakar""
¿El ejercicio no pasa la prueba, qué debo hacer? 😶
Si te quedaste atascado, es el momento perfecto para hacer una pregunta en las "Discusiones".
* Asegúrate de incluir la salida de las pruebas. Sin ella, es casi imposible entender qué está mal, incluso si muestras tu código. Los programadores tienen dificultades para ejecutar el código en su mente, pero casi siempre es posible entender a dónde mirar a partir del error que recibiste.
Mi código funciona en mi entorno, pero no aquí 🤨
Las pruebas están diseñadas de manera que verifican la solución de diferentes maneras y con diferentes datos. A menudo, una solución funciona con ciertos datos de entrada pero no con otros. Para entender este punto, revisa la pestaña "Pruebas" y presta atención a los mensajes de error, que suelen contener pistas.
Mi código es diferente a la solución del profesor 🤔
Esto es normal 🙆. En programación, una tarea puede tener muchas soluciones diferentes. Si tu código pasa la prueba, cumple con los requisitos de la tarea.
En raras ocasiones, la solución puede estar ajustada para pasar las pruebas, pero esto suele ser evidente.
Leí la lección, pero no entendí nada 🙄
Crear materiales de aprendizaje comprensibles para todos es bastante difícil. Hacemos nuestro mejor esfuerzo, pero siempre hay margen para mejorar. Si encuentras material que no entiendes, describe el problema en las "Discusiones". Es ideal si puedes formular los aspectos que no entiendes en forma de preguntas. Por lo general, necesitamos unos días para hacer mejoras.
Por cierto, tú también puedes contribuir a mejorar los cursos: en la parte inferior hay un enlace al código fuente de las lecciones, que se puede modificar directamente en el navegador.