Lección 7 de 75 18 min de lectura

Strings y Manipulación de Texto

Los strings son uno de los tipos de datos más utilizados en PHP. En esta lección aprenderás todas las formas de crear, combinar y manipular cadenas de texto.

Formas de definir strings

PHP ofrece cuatro formas de definir strings:

1. Comillas simples

El contenido se toma de forma literal. No interpreta variables ni secuencias de escape (excepto \\ y \').

PHP
<?php

$nombre = 'Carlos';

// Literal - NO interpreta la variable
echo 'Hola, $nombre';  // Hola, $nombre

// Para incluir comilla simple, escápala
echo 'It\'s working';  // It's working

2. Comillas dobles

Interpreta variables y secuencias de escape como \n, \t, etc.

PHP
<?php

$nombre = 'Carlos';
$edad = 28;

// Interpreta variables
echo "Hola, $nombre\n";        // Hola, Carlos
echo "Tienes $edad años\n";    // Tienes 28 años

// Sintaxis con llaves para claridad
echo "Usuario: {$nombre}\n";

// Útil para acceder a arrays u objetos
$user = ["name" => "Ana"];
echo "Hola, {$user['name']}\n"; // Hola, Ana

Secuencias de escape

Secuencia Significado
\n Salto de línea
\r Retorno de carro
\t Tabulación
\\ Barra invertida
\$ Símbolo de dólar
\" Comilla doble

3. Heredoc

Para strings multilínea que interpretan variables. Útil para HTML o textos largos.

PHP
<?php

$nombre = 'Carlos';
$titulo = 'Bienvenido';

$html = <<<HTML
<div class="card">
    <h1>{$titulo}</h1>
    <p>Hola, {$nombre}. Gracias por visitarnos.</p>
</div>
HTML;

echo $html;

4. Nowdoc

Como Heredoc pero sin interpretar variables. El identificador va entre comillas simples.

PHP
<?php

$codigo = <<<'PHP'
<?php
$variable = "valor";
echo $variable;
?>
PHP;

echo $codigo; // Muestra el código tal cual, sin interpretar

Concatenación

Usa el operador . (punto) para unir strings:

PHP
<?php

$nombre = 'Carlos';
$apellido = 'García';

// Concatenar con punto
$nombreCompleto = $nombre . ' ' . $apellido;
echo $nombreCompleto; // Carlos García

// Concatenar y asignar
$mensaje = 'Hola';
$mensaje .= ', mundo'; // Equivale a: $mensaje = $mensaje . ', mundo'
echo $mensaje; // Hola, mundo

Funciones esenciales de strings

Longitud y acceso

PHP
<?php

$texto = 'Hola Mundo';

// Longitud del string
echo strlen($texto);  // 10

// Acceder a caracteres individuales
echo $texto[0];       // H
echo $texto[5];       // M

// Número de palabras
echo str_word_count($texto); // 2

Mayúsculas y minúsculas

PHP
<?php

$texto = 'Hola Mundo';

echo strtoupper($texto);  // HOLA MUNDO
echo strtolower($texto);  // hola mundo
echo ucfirst('hola');     // Hola (primera letra mayúscula)
echo ucwords('hola mundo'); // Hola Mundo (cada palabra)

// Para UTF-8 (acentos, ñ, etc.)
echo mb_strtoupper('año'); // AÑO

Buscar y reemplazar

PHP
<?php

$texto = 'PHP es genial. PHP es potente.';

// Buscar posición (primera ocurrencia)
echo strpos($texto, 'es');     // 4

// Buscar última ocurrencia
echo strrpos($texto, 'es');    // 20

// Verificar si contiene
if (str_contains($texto, 'genial')) {  // PHP 8+
    echo "Encontrado\n";
}

// Reemplazar
echo str_replace('PHP', 'Laravel', $texto);
// Laravel es genial. Laravel es potente.

// Reemplazar múltiples
$buscar = ['PHP', 'genial'];
$reemplazo = ['Python', 'increíble'];
echo str_replace($buscar, $reemplazo, $texto);

Extraer subcadenas

PHP
<?php

$texto = 'Hola Mundo';

// Extraer desde posición
echo substr($texto, 0, 4);   // Hola (desde 0, 4 caracteres)
echo substr($texto, 5);      // Mundo (desde 5 hasta el final)
echo substr($texto, -5);     // Mundo (últimos 5 caracteres)
echo substr($texto, -5, 3);  // Mun (3 caracteres desde el final)

// Verificar inicio y final (PHP 8+)
echo str_starts_with($texto, 'Hola');  // true
echo str_ends_with($texto, 'Mundo');   // true

Limpiar espacios

PHP
<?php

$texto = '   Hola Mundo   ';

echo trim($texto);    // "Hola Mundo" (ambos lados)
echo ltrim($texto);   // "Hola Mundo   " (solo izquierda)
echo rtrim($texto);   // "   Hola Mundo" (solo derecha)

// Quitar caracteres específicos
$ruta = '/carpeta/archivo/';
echo trim($ruta, "/"); // "carpeta/archivo"

Dividir y unir

PHP
<?php

// Dividir string en array
$csv = 'manzana,pera,naranja';
$frutas = explode(",", $csv);
print_r($frutas);
// Array ( [0] => manzana [1] => pera [2] => naranja )

// Unir array en string
$lista = ["PHP", "JavaScript", "Python"];
$texto = implode(", ", $lista);
echo $texto; // PHP, JavaScript, Python

// Alias de implode
$texto = join(" - ", $lista); // PHP - JavaScript - Python

Formateo

PHP
<?php

// sprintf - Formatear string
$nombre = "Carlos";
$edad = 28;
$mensaje = sprintf("Hola, %s. Tienes %d años.", $nombre, $edad);
echo $mensaje; // Hola, Carlos. Tienes 28 años.

// printf - Formatear e imprimir directamente
printf("Precio: %.2f €\n", 19.5); // Precio: 19.50 €

// Formateadores comunes:
// %s - string
// %d - entero
// %f - float
// %.2f - float con 2 decimales
// %05d - entero con padding de ceros (5 dígitos)
Funciones mb_* para UTF-8

Si trabajas con caracteres especiales (acentos, ñ, emojis), usa las funciones mb_*: mb_strlen(), mb_substr(), mb_strtoupper(), etc. Trabajan correctamente con UTF-8.

Comparar strings

PHP
<?php

$a = "Hola";
$b = "hola";

// Comparación sensible a mayúsculas
echo $a === $b; // false

// Comparación insensible a mayúsculas
echo strcasecmp($a, $b) === 0; // true

// strcmp devuelve:
// 0 si son iguales
// < 0 si $a < $b
// > 0 si $a > $b
echo strcmp("abc", "abd"); // -1

Ejercicios

Ejercicio 1: Formatear nombre completo

Dadas las variables $nombre = "juan" y $apellido = "GARCIA", crea una variable $nombreCompleto con el formato "Juan Garcia" (primera letra mayuscula, resto minuscula).

Ver solucion
<?php

declare(strict_types=1);

$nombre = 'juan';
$apellido = 'GARCIA';

$nombreFormateado = ucfirst(strtolower($nombre));
$apellidoFormateado = ucfirst(strtolower($apellido));

$nombreCompleto = $nombreFormateado . ' ' . $apellidoFormateado;
echo $nombreCompleto; // Juan Garcia

Ejercicio 2: Extraer dominio de email

Dado el email $email = "usuario@ejemplo.com", extrae solo el dominio (la parte despues de @) usando funciones de strings.

Ver solucion
<?php

declare(strict_types=1);

$email = 'usuario@ejemplo.com';

$posicionArroba = strpos($email, '@');
$dominio = substr($email, $posicionArroba + 1);

echo $dominio; // ejemplo.com

Ejercicio 3: Procesar lista CSV

Dado el string $csv = "manzana,pera,naranja,platano", conviertelo en un array y luego vuelve a unirlo usando " - " como separador.

Ver solucion
<?php

declare(strict_types=1);

$csv = 'manzana,pera,naranja,platano';

$frutas = explode(',', $csv);
$resultado = implode(' - ', $frutas);

echo $resultado; // manzana - pera - naranja - platano

¿Te está gustando el curso?

Tenemos cursos premium con proyectos reales y soporte personalizado.

Descubrir cursos premium