Manipulación de Strings en PHP
Las cadenas de texto (strings) forman el contenido de tu página web. En esta lección veremos como crear, unir, y manipular cadenas, desde lo mas básico.
Lo básico sobre strings
Una cadena de tecto es cualquier secuencia de caracteres (números, letras o signos)
entre comillas, ya sean simples ( '
) o dobles ("
).
PHP
considera todo lo que está entre comillas como una cadena, pero debes usar el mismo tipo de
comillas para abrir y cerrar:
<?php
$cadena1 = 'Esto es una cadena con comillas simples';
$cadena2 = "Esto es una cadena con comillas dobles";
$cadena3 = "Esta 'frase' es una sola cadena"; // Válido
$cadena4 = 'Y esta "otra" también'; // válido
$cadena5 = "Esto es inválido'; // ¡Error! Comillas mezcladas
?>
El tipo de comillas que abras define el cierre. Puedes incluir comillas diferentes dentro de la cadena sin problema. Si necesitas usar el mismo tipo de comillas, escápalas con una barra invertida
(\
):
<?php
$cadena1 = "Este es un \"ejemplo\" válido";
$cadena2 = 'That\'s a valid string';
$cadena3 = "Ruta: c:\\windows\\program.exe"; // Doble escape para mostrar \
?>
Las cadenas son esenciales para mostrar texto o guardar datos, como nombres o correos. También puedes usarlas en constantes para valores fijos:
<?php
const SITIO = "miweb.com"; // Alternativa a define()
echo SITIO; // Imprime: miweb.com
?>
Asignando cadenas a variables
Asigna una cadena a una variable con el operador =
:
<?php
$pais = "España";
$pais = 'España'; // Equivalente
echo $pais; // Imprime: España
?>
Si asignas números a una cadena, puedes forzarla a otro tipo con
casting ((int)
, (string)
o settype()
.
Casting es más común porque es corto y claro, como pegar una etiqueta al valor:
<?php
$texto = "123";
$numero = (int)$texto; // Casting: ahora es integer
settype($texto, "integer"); // settype: mismo resultado, pero más largo
echo gettype($numero); // Imprime: integer
?>
Comillas simples vs. dobles
PHP analiza el contenido de las comillas dobles y sustituye variables por su valor:
<?php
$pais = "España";
$frase = "Yo vivo en $pais";
echo $frase; // Imprime: Yo vivo en España
?>
PHP no analiza el contenido entre comillas simples, mostrando el texto literal:
<?php
$pais = "España";
$frase = 'Yo vivo en $pais';
echo $frase; // Imprime: Yo vivo en $pais
?>
Nota: Usa comillas simples para cadenas
simples, ya que son más rápidas (PHP no las analiza). Usa comillas dobles cuando necesites incluir
variables o caracteres especiales (como \n
).
Sumando cadenas
Une cadenas con el operador .
(concatenación):
<?php
$nombre = "Juan";
$fruta = "manzanas";
$accion = $nombre . " come " . $fruta;
echo $accion; // Imprime: Juan come manzanas
?>
Puedes concatenar directamente o asignar el resultado a una variable:
<?php
$mivariable = "Primera frase, ";
$mivariable .= "segunda frase y ";
$mivariable .= "tercera frase.";
echo $mivariable; // Imprime: Primera frase, segunda frase y tercera frase.
?>
O de forma compacta:
<?php
$mivariable = "Primera frase, " . "segunda frase y " . "tercera frase.";
echo $mivariable; // Imprime: Primera frase, segunda frase y tercera frase.
?>
Calculando la longitud de una cadena
Usa strlen()
para contar los caracteres de una cadena:
<?php
$cadena = "hola como te va";
$longitud = strlen($cadena);
echo $longitud; // Imprime: 15
$cadena = "hola como te va"; // Espacio extra
echo strlen($cadena); // Imprime: 16
?>
Nota: strlen()
cuenta cada carácter,incluyendo espacios y caracteres especiales.
Eliminando espacios
Elimina espacios en blanco u otros caracteres con trim()
: Quita espacios, tabuladores
(\t
), nuevas líneas (\n
), retornos de carro(\r
), etc., al inicio y final.
ltrim()
elimina solo al inicio, y rtrim()
solo al final:
<?php
$cadena = "\thola como te va\n"; // cadena con tab al principio y nueva linea al final
echo $cadena; // Imprime: hola como te va
echo ltrim($cadena, "\t"); // Imprime: hola como te va
echo trim($cadena); // Imprime: hola como te va
?>
Puedes eliminar cualquier carácter, no solo espacios:
<?php
$cadena = "hola como te va";
echo ltrim($cadena, "h"); // Imprime: ola como te va
?><
Mayúsculas y minúsculas
Convierte el texto con: strtoupper()
: todo a mayúsculas.
strtolower()
: todo a minúsculas.
ucfirst()
: Primera letra en mayúscula.
ucwords()
: Primera letra de cada palabra en mayúscula.
<?php
$cadena = "hola cómo te va";
echo strtoupper($cadena) . "\n"; // Imprime: HOLA CÓMO TE VA
echo strtolower($cadena) . "\n"; // Imprime: hola cómo te va
echo ucfirst($cadena) . "\n"; // Imprime: Hola cómo te va
echo ucwords($cadena) . "\n"; // Imprime: Hola Cómo Te Va
?>
Nota: Estas funciones respetan caracteres UTF-8 (como “á”), pero asegúrate de usar codificación UTF-8 en tu archivo.
Subcadenas
Extrae partes de una cadena con substr($cadena, inicio, longitud)
:
inicio
: Posición inicial (0 es el primer carácter; números negativos cuentan desde el final).
longitud
: (opcional): Cuántos caracteres tomar (positiva: hacia la derecha; negativa: resta desde el final).
<?php
$cadena = "123456789";
echo substr($cadena, 0) . "\n"; // Imprime: 123456789
echo substr($cadena, 3) . "\n"; // Imprime: 456789
echo substr($cadena, ‐3) . "\n"; // Imprime: 789
echo substr($cadena, 3, 3) . "\n"; // Imprime: 456
echo substr($cadena, 2, ‐3) . "\n"; // Imprime: 3456
echo substr($cadena, ‐6, ‐5) . "\n";// Imprime: 4
?>
Localiza una subcadena con strpos($cadena, subcadena)
:
<?php
$cadena = "blah@imaginary.com";
$subcadena = "@";
$inicio_dominio = strpos($cadena, $subcadena);
echo $inicio_dominio . "\n"; // Imprime: 4
echo substr($cadena, $inicio_dominio + 1); // Imprime: imaginary.com
?>
Cadenas como arrays
Accede a caracteres individuales usando corchetes ([]
), como si fuera un array:
<?php
$cadena = "hola";
echo $cadena[0] . "\n"; // Imprime: h
echo $cadena[2] . "\n"; // Imprime: l
?>
Ejemplo con referencias: Modifica una cadena por referencia en una función:
<?php
function agregar_prefijo(&$texto)
{
$texto = "Sr. " . $texto;
}
$nombre = "Juan";
agregar_prefijo($nombre);
echo $nombre; // Imprime: Sr. Juan
?>
Otras funciones útiles
str_replace
(buscar, reemplazar, cadena): Reemplaza texto.
<?php
$cadena = "Hola, mundo";
echo str_replace("mundo", "PHP", $cadena); // Imprime: Hola, PHP
?>
explode
(delimitador, cadena): Divide una cadena en un array.
<?php
$cadena = "manzana,pera,uva";
$frutas = explode(",", $cadena);
echo $frutas[0]; // Imprime: manzana
?>