PHP String
Aprende cómo funcionan las cadenas en PHP - creación, comillas, heredoc/nowdoc, secuencias de escape, concatenación y las funciones de cadena más usadas.
Una cadena en PHP es una secuencia de caracteres - texto como un nombre, una frase o un documento HTML completo. Las cadenas son uno de los tipos de datos más utilizados en PHP, y el lenguaje incluye una gran biblioteca de funciones para buscar, reemplazar, formatear y transformarlas.
Esta página cubre cómo crear cadenas, la diferencia entre comillas simples y dobles, secuencias de escape, cómo unir cadenas y las funciones de cadena que usarás con más frecuencia.
Crear una cadena
Puedes escribir un literal de cadena usando comillas simples (') o comillas dobles ("):
<?php
$greeting = 'Hello';
$name = "World";
echo $greeting; // Hello
?>Para texto más largo o complejo, PHP también ofrece la sintaxis heredoc y nowdoc, descritas a continuación.
Comillas simples vs. comillas dobles
Esta es la distinción más importante que debes aprender desde el principio. Las cadenas entre comillas dobles interpretan variables y secuencias de escape; las de comillas simples no lo hacen.
<?php
$name = "Alice";
echo "Hello, $name\n"; // Hello, Alice (then a newline)
echo 'Hello, $name\n'; // Hello, $name\n (printed literally)
?>En la versión con comillas dobles, $name se reemplaza por su valor y \n se convierte en un salto de línea real. En la versión con comillas simples, ambos se imprimen exactamente como se escribieron.
Las comillas simples son ligeramente más rápidas y seguras cuando no deseas interpolación, así que úsalas para literales simples y cambia a comillas dobles solo cuando necesites una variable o una secuencia de escape dentro de la cadena.
Interpolación con llaves
Cuando una variable va seguida de caracteres que podrían formar parte de su nombre, envuélvela en {} para que PHP sepa dónde termina el nombre:
<?php
$fruit = "apple";
echo "I ate two {$fruit}s\n"; // I ate two apples
?>Secuencias de escape
Las secuencias de escape solo tienen significado dentro de cadenas entre comillas dobles (y heredoc):
| Secuencia | Significado |
|---|---|
\n | Salto de línea |
\t | Tabulación |
\\ | Barra invertida |
\" | Comilla doble |
\$ | Signo de dólar (impide la interpolación) |
<?php
echo "Line one\nLine two\n";
echo "Price: \$10\n"; // Price: $10
?>Heredoc y nowdoc
Para texto de varias líneas, heredoc se comporta como una cadena entre comillas dobles (las variables se interpretan) y nowdoc se comporta como una cadena entre comillas simples (nada se interpreta).
<?php
$name = "Sam";
// Heredoc - interpolates $name
echo <<<EOT
Dear $name,
Welcome aboard!
EOT;
echo "\n---\n";
// Nowdoc - prints $name literally
echo <<<'EOT'
Dear $name,
This is shown verbatim.
EOT;
?>El identificador de cierre (EOT en este caso) debe comenzar al principio de una línea.
Concatenación
Une cadenas con el operador punto (.). El operador .= agrega texto a una cadena existente:
<?php
$first = "John";
$last = "Doe";
$full = $first . " " . $last;
echo $full . "\n"; // John Doe
$message = "Hello";
$message .= ", world!";
echo $message . "\n"; // Hello, world!
?>Consulta PHP Operators para la lista completa de operadores de cadena y aritméticos.
Funciones de cadena más comunes
La biblioteca estándar de PHP incluye docenas de funciones para cadenas. Estas son las que más usarás:
<?php
$text = "Hello, World";
echo strlen($text) . "\n"; // 12 - length in bytes
echo strtoupper($text) . "\n"; // HELLO, WORLD
echo strtolower($text) . "\n"; // hello, world
echo str_replace("World", "PHP", $text) . "\n"; // Hello, PHP
echo strpos($text, "World") . "\n"; // 7 - index of first match
echo substr($text, 0, 5) . "\n"; // Hello
echo trim(" padded ") . "|\n"; // padded|
?>| Función | Qué hace |
|---|---|
strlen() | Devuelve la longitud de la cadena |
strtoupper() / strtolower() | Cambia las mayúsculas/minúsculas |
str_replace() | Reemplaza todas las ocurrencias de una subcadena |
strpos() | Encuentra la posición de una subcadena (devuelve false si no existe) |
substr() | Extrae una parte de una cadena |
trim() | Elimina los espacios en blanco de ambos extremos |
explode() | Divide una cadena en un array |
implode() | Une un array en una cadena |
Formato con sprintf()
Cuando necesitas control preciso sobre cómo se insertan los valores en una cadena - relleno, formato de números, alineación - usa sprintf(). Devuelve una cadena formateada (y printf() la imprime directamente):
<?php
$name = "Alice";
$score = 92.5;
$line = sprintf("%s scored %.1f%%", $name, $score);
echo $line . "\n"; // Alice scored 92.5%
?>El marcador %s inserta una cadena, %d un entero y %.1f un número de punto flotante redondeado a un decimal.
Acceder a caracteres individuales
Una cadena puede indexarse como un array, empezando por 0:
<?php
$word = "PHP";
echo $word[0] . "\n"; // P
echo $word[2] . "\n"; // P
?>Qué explorar a continuación
- PHP Strings - un tutorial más profundo sobre cómo trabajar con texto en PHP.
- PHP Data Types - cómo encajan las cadenas junto con enteros, flotantes, arrays y más.
- PHP Functions - escribe tus propias funciones reutilizables.