006d Tipos de datos: strings
Un string
es una cadena de caracteres. El uso del término “string” viene desde los 1960s cuando los primeros programadores necesitaban representar una cadena de letras o caracteres en su código. Vale la pena buscar el internet por la etimología del término con respeto a la programación de computadores.
En PHP, cada carácter en un string está representado por un byte. En otras palabras, PHP no admita de forma nativa caracteres multibyte (de varios bytes) en los strings (Unicode). Eso no quiere decir que no se puede usar Unicode, más bien, para poder usar Unicode, necesitará usar funciones especiales. Véase la documentación oficial para más detalles en el uso de Unicode en PHP.
Existen cuatro maneras de definir un string en PHP:
<?php
// Entrecomillado doble:
$string = "Este es un ejemplo de un string. ¡Es genial!";
// Entrecomillado simple:
$string = 'Otra ejemplo de un string. :)';
// HEREDOC (nombre raro, pero así es)
$string = <<<EOT
Puede poner cualquier text aquí. Usted
puede sangrar sobre varias líneas.
Anote que un heredoc empieza con trés "<" simbolos y
un identificador (en este caso EOT, pero el identificador
puede ser cualquier cosa).
El HEREDOC termina con el identificador y un punta ya coma.
EOT;
// NOWDOC (parecido a HEREDOC, pero distinto)
$string = <<<'EOT'
Un NOWDOC es parecido a un string entre comillas simples. Un HEREDOC es
parecido a un string entre comillas dobles.
Anote como el identificador por un NOWDOC es entre comillas simples.
EOT;
Strings de entrecomillado simple
Usando comillas simples (el carácter ‘) es la manera más sencilla de formar un string. Cualquier texto que pone dentro del las comillas será el string. Hay dos excepciones a esto. Si quiere una comilla simple dentro de un string de entrecomillado simple, se ha de escapar con una barra invertida (\). También, si quiere una barra invertida, se ha de escapar con otra barra invertida (\\).
<?php
// String de entrecomillada simple con comillas simples.
$string = 'Este string tiene \'comillas\' simples.';
// String de entrecomillada simple con una barra invertida.
$string = 'El archivo se encuentra en el disco C:\\.'; // Salida sólo tendrá una "\" carácter
Strings de entrecomillado doble
Usando comillas dobles permite las caracteres escapadas y el análisis de variables.
La documentación oficial contiene una lista completa de caracteres escapadas, pero aquí hay algunas usadas comúnmente:
\n - avance de línea
\r - retorno de carro
\” - comillas dobles
\\ - barra invertida
\$ - signo de dólar
Cuando PHP interpreta un string entrecomillada doble, busca por variables dentro del string y las resuelva primero.
<?php
// Ejemplo de un carácter escapado de avance de línea
echo "Verdadero\nPHP!"; // Salida:
// Verdadero
// PHP!
// Interpretando variables
$nombre = "Fulano de Tal";
echo "El nombre es $nombre."; // Salida:
// El nombre es Fulano de Tal.
// Segunda manera de la interpretación de variables
$nombre = "Fulano de Tal";
echo "El nombre es {$nombre}."; // Salida:
// El nombre es Fulano de Tal.
String HEREDOC
Igual como un string entrecomillada doble, los strings HEREDOC son interpretados con caracteres escapados y variables. La excepción es que comillas dobles no necesitan ser escapadas, aunque se puede.
String NOWDOC
Strings NOWDOC son parecidos a string entrecomilladas simples, pero no interpretan ningunas caracteres escapadas.
Acceso a strings
Puede acceder a cualquier carácter dentro de un string usando corchetes ([]). El primer carácter en un string tiene el indice de 0, el segundo tiene indice de 1, y así sucesivamente por la duración del string.
<?php
$string = "Hola";
echo $string[0]; // Salida: H
echo $string[2]; // Salida: l
Concatenación de string
La concatenación es simplemente juntando a dos strings. Se hace con el operador punto (.). Algunos idiomas usan el operador suma (+), pero eso no funcionará en PHP.
<?php
$string1 = "Hola";
$string2 = "Mundo";
echo $string1 . $string2; // Output: HolaMundo
echo $string1 . " " . $string2; // Output: Hola Mundo
Forzado a string
Puede convertir a un string usando la función strval()
o usando (string)
. Algunas cosas convierten como uno espere, otras no.
<?php
// Boolean a string
echo (string) true; // Salida: 1
echo (string) false; // No sale nada! Convierte a un string vacio: ""
// Int a string
echo (string) 3; // Salida: 3
// Float a string
echo (string) 3.1415; // Salida: 3.1415
// Array a string
echo (string) [1,2,3]; // Salida: PHP Warning: Array to string conversion...
// Forzando un array a un string emite "Array" y un advierto.
// Object a string
echo (string) (new stdClass()); // Salida: PHP Warning: Uncaught error...
// Forzando un object a un string emite un advierto.
// Para poder forzar un objecto, el método magico __toString() se
// tiene que definir en el objeto. Más sobre esto más adelante cuando
// tratamos los temas de OOP y métodos mágicos.
// nulo a string
echo (string) null; // No sale nada. Se convierte a un string vacio: ""
Mejores practicas
Los strings y la manipulación de strings son un parte íntegro a la mayoría de los lenguajes de programación, y PHP no es excepción. Como consecuencia, hay muchas opiniones sobre como manejar strings. Los recomendamos leer la documentación, de experimentar, y decidir por si mismos. Además, tenga cuidado cuando alguien dice que usar comillas simples es mejor. Y recuerde de que Unicode es complicado y necesita ser muy bien entendido antes de asumir como se comportará con su código.
Recursos
- Manual de PHP: strings
- Manual de PHP: cadenas de caracteres multibyte
- Manual de PHP: Funciones de strings
Retos
Concatenación
Practica concatenando strings.
Primero, usa un echo
para mostrar los siguientes juntados en una línea:
"Vine."
"Vi."
"Conquisté."
Después, asigna cada string a una variable y luego usa un echo
para mostrar los tres strings en una línea.
Maximo tamaño de un string
Búsca en el internet/la documentación para averigüar el tamaño maximo que puede ser un string en PHP.