Programación en PHP/Cadenas
grupo Las cadenas, también llamadas strings (cadenas en inglés), son un tipo de datos que representan texto. Se llaman cadenas porque están formadas por caracteres únicos encadenados.
Como vimos en el ejemplo de "Hola, Mundo", podemos asignarlas a una variable e incluso combinarlas. Sin embargo es importante que conozcamos más sobre ellas y acerca de cómo funcionan.
Construcción
[editar]Una cadena se puede construir de tres maneras:
Comillas simples
[editar]Se basa en la delimitación del texto mediante comillas simples ( ' ). Esta es la forma más sencilla de construir una cadena, pero también la más estricta: Todo lo que aparece en el interior es integramente la cadena.
<?php
$nroPeras = 3;
$nroManzanas = 2;
$frase1 = 'Tengo $nroManzanas manzanas y $nroPeras peras.';
$frase2 = 'Tengo '.$nroManzanas.' manzanas y '.$nroPeras.' peras.';
echo $frase1 . ' - ' . $frase2;
?>
Todo lo que introduzcamos aparecerá como tal y se almacenará como tal. En el caso de que necesitemos incluir una comilla simple en el texto, debemos escaparla. Para ello usaremos la barra invertida ( \ ) antes de la comilla ( \' ). En el caso de que deseemos añadir una barra invertida al final de una cadena o antes de una comilla simple, deberemos escapar la propia barra invertida ( \\ ). En cualquier otro caso, la barra invertida aparecerá normalmente.
<?php
echo 'Ejemplo de \'cómo escapar varias comillas\',
de poner una barra invertida delante de una comilla \\\'
o de terminar la cadena con una barra invertida\\';
?>
Ejemplo de 'cómo escapar varias comillas', de poner una barra invertida delante de una comilla \' o de terminar la cadena con una barra invertida\
Como también vemos en este ejemplo, los saltos de línea naturales, es decir saltar la línea en la definición de la cadena, también se mantiene cuando la imprimimos en pantalla.
Comillas dobles
[editar]Cuando necesitamos incluir muchos valores guardados en variables dentro de una cadena, es tedioso tener que utilizar repetidamente el operador concatenador de cadenas ( . ) para unir variables con pedazos de cadena, como hemos visto en el primer ejemplo.
Para esto existe una forma de cadena más flexible, pero con el inconveniente de que hay más cosas que debemos tener en cuenta a la hora de insertar símbolos especiales. Podemos en este caso introducir variables dentro de la cadena y éstas serán interpretadas como su valor, no como su nombre:
<?php
$nroPeras = 3;
$nroManzanas = 2;
$frase1 = "Tengo $nroManzanas manzanas y $nroPeras peras.";
$frase2 = "Tengo \$nroManzanas manzanas y \$nroPeras peras.";
echo $frase1 . " - " . $frase2;
?>
El funcionamiento de la barra invertida es similar a las cadenas de comillas simples, pero se aplica, no sólo también al dólar ( $ ), sino a una serie de letras que, cuando son escapadas, adquieren otro significado:
\n Nueva línea \r Retorno de carro \t Tabulador \$ Signo del dólar \" Comillas dobles \\ Barra invertida \### Carácter representado por 1, 2 ó 3 cifras ( # ) en código octal \x## Carácter representado por 1 ó 2 cifras en código hexadecimal
Heredoc
[editar]Ésta es quizás la forma menos común de definir cadenas por su extraña sintaxis. No por ello debemos obviarla. Es una potente forma de tener toda la flexibilidad de las comillas dobles sin el problema de tener que escapar las comillas dobles.
Un ejemplo es el siguiente:
<?php
$nroPeras = 3;
$nroManzanas = 2;
$frase = <<<FIN
Tengo:
\t$nroPeras peras
'''\t$nroManzanas manzanas'''
FIN
?>
- 3 peras
- 2 manzanas
En detalle, la primera línea contiene tres sígnos de menor que ( <<< ) y a continuación debe tener una serie de caracteres que finalizarán el texto. En nuestro ejemplo eran FIN, pero puede ser cualquier texto que no contenga un salto de línea. En las siguientes líneas ponemos el texto que queremos introducir en la cadena tal como deseamos que aparezca, teniendo en cuenta la tabla superior y la interpretación de las variables. Cuando terminamos la cadena, en la siguiente línea sólo ponemos los caracteres que definimos al principio. No debe haber ningún otro carácter o espacio ni antes ni después de estos caracteres, de hecho, y como excepción, no es necesario el uso del punto y coma tras este texto finalizador.
Además, puesto que el texto finalizador es completamente personalizable podemos evitar errores. Si nuestro texto hubiera sido Tengo, por ejemplo, Al aparecer esta palabra al principio de una línea el interpretador de PHP hubiera entendido que ahí se acaba la cadena y habría producido un error al encontrar texto incongruente a continuación.
Para información más detallada sobre el uso y la sintaxis de las cadenas pulsa aquí.