Saltar al contenido principal
Texto codificado con caracteres de programación y símbolos de operaciones de strings.

Manipulación de strings en PHP: funciones que todo desarrollador debe conocer

Trabajar con texto es una de las cosas que más hacemos en PHP. Ya sea para validar formularios, procesar datos de usuario, construir URLs amigables o simplemente formatear información para mostrar, dominar las funciones de strings te va a ahorrar mucho tiempo y código spaghetti.

En este post te voy a mostrar las funciones que uso constantemente en mi día a día, con ejemplos reales que puedes copiar y adaptar directamente a tus proyectos.

Longitud de un string con strlen()

Esta es de las más básicas pero fundamentales. strlen() nos devuelve la cantidad de caracteres que tiene un string, incluyendo espacios y símbolos.

$nombre = "blivecode";
$longitud = strlen($nombre);

echo $longitud; // 9

¿Cuándo la uso? Por ejemplo, cuando necesito validar que una contraseña tenga un mínimo de caracteres o para truncatear texto mostrando “leer más” si el contenido excede cierto límite.

$descripcion = "Este es un texto muy largo que necesito mostrar resumido...";
$limite = 30;

if (strlen($descripcion) > $limite) {
    echo substr($descripcion, 0, $limite) . "...";
} else {
    echo $descripcion;
}

Extraer fragmentos con substr()

substr() nos permite obtener una porción de un string. Le pasas el string, desde dónde empezar y cuántos caracteres quieres (opcional).

$texto = "Hola mundo";
echo substr($texto, 0, 4);  // "Hola"
echo substr($texto, 5);      // "mundo"
echo substr($texto, -5);     // "mundo"

Caso de uso real: Cuando trabajo con URLs amigables o slugs. Por ejemplo, necesito obtener los primeros 3 caracteres de un código de país para hacer una validación rápida.

$codigoPais = "MX";
$prefijo = substr($codigoPais, 0, 2);

if (strtoupper($prefijo) === "MX") {
    echo "El producto está disponible para México";
}

Reemplazar texto con str_replace()

Esta es de mis favoritas. Te permite reemplazar todas las ocurrencias de un texto dentro de un string.

$oracion = "Me encanta programar en PHP";
$modificada = str_replace("PHP", "Laravel", $oracion);

echo $modificada; // "Me encanta programar en Laravel"

Puedes reemplazar varias palabras a la vez pasando arrays:

$texto = "Rojo y azul son colores";
$buscar = ["Rojo", "azul"];
$reemplazar = ["Verde", "amarillo"];

echo str_replace($buscar, $reemplazar, $texto);
// "Verde y amarillo son colores"

Ejemplo práctico: Normalizar datos importados de Excel donde hay caracteres extraños o espaciado inconsistente.

$importedData = "  Juan    Pérez  ";
$limpio = str_replace(["  ", "  "], " ", trim($importedData));

echo $limpio; // "Juan Pérez"

Buscar posición con strpos()

strpos() busca un string dentro de otro y te devuelve la posición donde lo encuentra. Si no lo encuentra, devuelve false.

$email = "usuario@ejemplo.com";
$arroba = strpos($email, "@");

echo $arroba; // 7

Importante: Hay que usar === para comparar porque strpos() puede devolver 0 (que es una posición válida) y 0 == false sería true pero 0 === false sería false.

if (strpos($email, "@") === false) {
    echo "Email inválido: falta el @";
} else {
    echo "Email válido";
}

Caso real: Detectar el dominio de un email para separar el usuario del servidor.

$email = "contacto@blivecode.com";
$arrobaPos = strpos($email, "@");
$usuario = substr($email, 0, $arrobaPos);
$dominio = substr($email, $arrobaPos + 1);

echo "Usuario: $usuario\n";   // "contacto"
echo "Dominio: $dominio\n";   // "blivecode.com"

Limpiar espacios con trim(), ltrim() y rtrim()

Estas funciones eliminan espacios en blanco (u otros caracteres) del inicio y/o final de un string. Super útiles para sanitizar inputs de usuario.

$nombre = "   Juan Pérez   ";
echo trim($nombre);   // "Juan Pérez" (ambos lados)
echo ltrim($nombre);  // "Juan Pérez   " (solo izquierda)
echo rtrim($nombre);  // "   Juan Pérez" (solo derecha)

También puedes especificar qué caracteres quieres eliminar:

$precio = "$150.00";
echo trim($precio, "$"); // "150.00"

Aplicación común: Limpiar datos de formularios antes de guardarlos en la base de datos.

$input = $_POST['nombre'] ?? '';
$nombreLimpio = trim($input);

if (empty($nombreLimpio)) {
    echo "El nombre es requerido";
}

Dividir y unir con explode() e implode()

explode() divide un string en un array usando un separador. implode() hace lo contrario, une un array en un string.

$frutas = "manzana,pera,uva,mango";
$arrayFrutas = explode(",", $frutas);

print_r($arrayFrutas);
// Array ( [0] => manzana, [1] => pera, [2] => uva, [3] => mango )
$arrayFrutas = ["manzana", "pera", "uva"];
$texto = implode(" - ", $arrayFrutas);

echo $texto; // "manzana - pera - uva"

Ejemplo práctico: Procesar tags separados por comas en un formulario.

$inputTags = "php, mysql, bash, linux";
$tags = array_map('trim', explode(",", $inputTags));

print_r($tags);
// Array ( [0] => php, [1] => mysql, [2] => bash, [3] => linux )

Expresiones regulares con preg_match()

Para búsquedas más complejas, preg_match() usa expresiones regulares. Devuelve 1 si encontró coincidencia, 0 si no, y false si hubo error.

$texto = "Mi email es test@blivecode.com";
$patron = "/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/";

if (preg_match($patron, $texto, $coincidencia)) {
    echo "Email encontrado: " . $coincidencia[0];
}

El tercer parámetro $coincidencia captura lo que encontró y lo mete en un array.

Ejemplo real: Validar que un número de teléfono tenga el formato correcto.

$telefono = "+52 55 1234 5678";
$patron = "/^\+?[0-9]{1,3}\s?[0-9]{2}\s?[0-9]{4}\s?[0-9]{4}$/";

if (preg_match($patron, $telefono)) {
    echo "Teléfono válido";
} else {
    echo "Teléfono con formato inválido";
}

Otro uso común: Extraer solo números de un string (útil para limpiar datos).

$precio = "Precio: $150.50 USD";
preg_match_all('/[0-9.]+/', $precio, $coincidencias);

echo $coincidencias[0][0]; // "150.50"

Combinando funciones

La verdadera magia ocurre cuando combinas estas funciones. Mira este ejemplo donde procesamos un CSV crudo:

$csvLine = "  Juan ,  juan@email.com , 35 ";

// Limpiar y dividir
$campos = explode(",", $csvLine);
$campos = array_map('trim', $campos);

// Validar email
$email = $campos[1];
if (strpos($email, "@") === false) {
    throw new Exception("Email inválido");
}

// Extraer nombre de usuario del email
$usuario = substr($email, 0, strpos($email, "@"));

echo "Nombre: {$campos[0]}, Usuario: $usuario, Edad: {$campos[2]}";
// "Nombre: Juan, Usuario: juan, Edad: 35"

Funciones adicionales útiles

No cubrire estas pero vale la pena mencionar:

  • strtoupper() / strtolower() - Cambiar mayúsculas/minúsculas
  • ucwords() - Primera letra de cada palabra en mayúscula
  • str_contains() (PHP 8+) - Verificar si un string contiene otro
  • str_starts_with() / str_ends_with() (PHP 8+) - Verificar inicio/fin
$titulo = "como crear un api rest";
echo ucwords($titulo); // "Como Crear Un Api Rest"

// PHP 8+
$url = "https://blivecode.com/blog";
if (str_starts_with($url, "https://")) {
    echo "URL segura";
}

Conclusión

Estas funciones son la base para manipular texto en PHP. No necesitas aprender todas de memoria, pero sí saber que existen y cuándo pueden servirte. Con la práctica vas a empezar a ver patrones donde aplicarlas naturalmente.

Mi recomendación: empieza usando las que más necesites en tu proyecto actual y ve ampliando tu repertorio conforme surjan nuevos casos. La manipulación de strings es de esas habilidades que mejora drasticamente cuanto más la practicas.

¡Espero que te sea útil para tus próximos proyectos!