Bricolaje y jardín

str_replace() en PHP: cómo reemplazar texto fácilmente y todos sus usos principales

6 min de lectura

str_replace() en PHP: cómo reemplazar texto fácilmente y todos sus usos principales

Cuando desarrollamos aplicaciones con PHP, es habitual necesitar modificar cadenas de texto. Cambiar una palabra por otra, sustituir determinados caracteres, eliminar fragmentos de una cadena o realizar reemplazos de forma automática son operaciones muy frecuentes.

Para este tipo de tareas, PHP incorpora la función str_replace(), una herramienta sencilla que permite buscar una determinada cadena y sustituirla por otra.

¿Qué es str_replace() en PHP?

str_replace() es una función de PHP utilizada para buscar un texto dentro de una cadena y reemplazarlo por otro.

Su sintaxis básica es:

str_replace($search, $replace, $subject);

El primer parámetro indica qué texto queremos buscar, el segundo especifica por qué queremos sustituirlo y el tercero contiene la cadena en la que se realizará la operación.

Por ejemplo:

$texto = "Hola mundo";

$resultado = str_replace("mundo", "PHP", $texto);

echo $resultado;

El resultado será:

Hola PHP

La documentación oficial de PHP sobre str_replace() recoge todas las posibilidades de esta función.

¿Para qué sirve str_replace()?

Esta función puede utilizarse en muchas situaciones diferentes.

Por ejemplo, permite:

  • Sustituir palabras.
  • Cambiar caracteres.
  • Eliminar fragmentos de texto.
  • Reemplazar varias palabras.
  • Modificar cadenas procedentes de formularios.
  • Preparar textos antes de mostrarlos.
  • Realizar sustituciones en contenidos almacenados en variables.
  • Trabajar con arrays de cadenas.

Una de sus principales ventajas es que resulta muy sencilla de utilizar.

Ejemplo sencillo de str_replace()

Supongamos que tenemos una frase:

$frase = "Me gusta JavaScript";

Podemos cambiar JavaScript por PHP:

$frase = str_replace("JavaScript", "PHP", $frase);

echo $frase;

Obtendremos:

Me gusta PHP

La función no modifica directamente la variable original, sino que devuelve el resultado del reemplazo. Por eso normalmente debemos guardar el resultado en una variable o utilizarlo directamente.

¿Cómo eliminar texto con str_replace()?

Una posibilidad muy útil consiste en sustituir un texto por una cadena vacía.

Por ejemplo:

$texto = "Hola mundo";

$texto = str_replace("mundo", "", $texto);

echo $texto;

El resultado será:

Hola

Esto permite utilizar str_replace() no solo para cambiar información, sino también para eliminar determinados fragmentos de una cadena.

Por ejemplo, podríamos eliminar determinados caracteres:

$telefono = "600-123-456";

$telefono = str_replace("-", "", $telefono);

echo $telefono;

El resultado sería:

600123456

Reemplazar varios textos a la vez

str_replace() también permite utilizar arrays para realizar múltiples sustituciones.

Por ejemplo:

$texto = "Hola Juan. Adiós Juan.";

$buscar = ["Juan", "Adiós"];
$reemplazar = ["Pedro", "Hasta luego"];

$resultado = str_replace($buscar, $reemplazar, $texto);

echo $resultado;

El resultado será:

Hola Pedro. Hasta luego Pedro.

Esto resulta especialmente práctico cuando necesitamos aplicar varias sustituciones sobre una misma cadena.

¿Qué ocurre si buscamos varias palabras?

Podemos utilizar un array como primer parámetro:

$texto = "PHP, JavaScript y Python";

$buscar = ["PHP", "JavaScript", "Python"];
$reemplazar = ["PHP", "JS", "PY"];

echo str_replace($buscar, $reemplazar, $texto);

En este caso, cada elemento del primer array se relaciona con el elemento situado en la misma posición del segundo.

Por tanto, PHP se mantiene, JavaScript se convierte en JS y Python pasa a ser PY.

¿Se puede utilizar str_replace() con arrays?

Sí. El parámetro $subject también puede ser un array.

Por ejemplo:

$frases = [
    "Hola mundo",
    "Bienvenido al mundo",
    "El mundo de PHP"
];

$resultado = str_replace("mundo", "universo", $frases);

En este caso, PHP realizará la sustitución en cada elemento del array.

El resultado será otro array con los textos modificados.

Esta posibilidad puede resultar muy útil cuando necesitamos procesar una colección de cadenas.

¿str_replace() distingue entre mayúsculas y minúsculas?

Sí.

La función str_replace() realiza las búsquedas teniendo en cuenta las mayúsculas y minúsculas.

Por ejemplo:

$texto = "Hola Mundo";

echo str_replace("mundo", "PHP", $texto);

No sustituirá Mundo, porque mundo y Mundo no son exactamente iguales.

Si necesitamos realizar una sustitución sin distinguir entre mayúsculas y minúsculas, PHP dispone de otra función llamada str_ireplace().

Por ejemplo:

$texto = "Hola Mundo";

echo str_ireplace("mundo", "PHP", $texto);

En este caso sí se realizará el reemplazo.

Puedes consultar la documentación de str_ireplace() para conocer sus diferencias.

¿Cómo saber cuántos reemplazos se han realizado?

str_replace() permite utilizar un cuarto parámetro opcional llamado $count.

Por ejemplo:

$texto = "PHP es sencillo. PHP es popular.";

$resultado = str_replace("PHP", "PHP 8", $texto, $cantidad);

echo $resultado;
echo $cantidad;

La variable $cantidad almacenará el número de reemplazos realizados.

En este caso, se habrán producido dos sustituciones.

Esta característica puede resultar útil cuando, además de modificar el texto, necesitamos saber cuántas coincidencias se encontraron.

Diferencia entre str_replace() y preg_replace()

Aunque ambas funciones permiten sustituir texto, tienen objetivos diferentes.

str_replace() está pensada para reemplazos directos y sencillos.

Por ejemplo:

str_replace("hola", "adiós", $texto);

preg_replace(), en cambio, permite utilizar expresiones regulares, por lo que resulta mucho más potente cuando necesitamos buscar patrones determinados.

Por ejemplo, si necesitamos localizar números, determinados formatos de texto o estructuras variables, una expresión regular puede ser más adecuada.

Para sustituciones simples, str_replace() suele ser mucho más fácil de leer y utilizar.

Ejemplo práctico: cambiar extensiones de archivos

Imaginemos que tenemos el nombre de un archivo:

$archivo = "imagen.jpg";

Podemos sustituir su extensión:

$nuevoArchivo = str_replace(".jpg", ".png", $archivo);

echo $nuevoArchivo;

El resultado será:

imagen.png

Eso sí, en aplicaciones reales donde necesitemos manipular rutas y extensiones de archivos de forma más robusta, conviene utilizar las funciones específicas que proporciona PHP para trabajar con nombres y rutas.

Ejemplo práctico con una URL

También podemos utilizar str_replace() para realizar modificaciones sencillas en una URL:

$url = "https://ejemplo.com/producto";

$url = str_replace("https://", "", $url);

echo $url;

El resultado será:

ejemplo.com/producto

Para operaciones más complejas con URLs, PHP ofrece otras herramientas específicas, pero str_replace() puede ser suficiente cuando únicamente necesitamos sustituir una parte conocida.

¿Qué devuelve str_replace()?

La función devuelve el texto resultante después de realizar las sustituciones.

Si $subject es una cadena, devuelve una cadena.

Si $subject es un array, devuelve un array.

Por ejemplo:

$texto = "Hola mundo";

$resultado = str_replace("mundo", "PHP", $texto);

echo $resultado;

Es importante recordar esta característica porque escribir simplemente:

str_replace("mundo", "PHP", $texto);

sin guardar ni utilizar el resultado no tendrá el efecto de modificar automáticamente $texto.

Errores habituales al utilizar str_replace()

Uno de los errores más frecuentes consiste en olvidar guardar el resultado.

Incorrecto:

$texto = "Hola mundo";

str_replace("mundo", "PHP", $texto);

echo $texto;

La variable seguirá conteniendo el texto original.

Una forma correcta sería:

$texto = "Hola mundo";

$texto = str_replace("mundo", "PHP", $texto);

echo $texto;

También hay que prestar atención a las mayúsculas y minúsculas cuando utilizamos str_replace().

En resumen

str_replace() es una función de PHP diseñada para buscar y sustituir texto dentro de una cadena o de un array.

Su sintaxis básica es:

str_replace($search, $replace, $subject);

Puede utilizarse para cambiar palabras, eliminar caracteres, realizar varias sustituciones al mismo tiempo o procesar diferentes cadenas almacenadas en un array.

Además, dispone de un cuarto parámetro opcional para conocer cuántos reemplazos se han realizado.

Para sustituciones sencillas, str_replace() es una herramienta muy práctica. Cuando necesitamos realizar búsquedas más avanzadas basadas en patrones, podemos recurrir a funciones como preg_replace().

Conocer esta función resulta especialmente útil para cualquier persona que trabaje habitualmente con cadenas de texto en PHP.

Productos recomendados

Seleccionados de nuestra tienda para este tema

Leave a comment

Carrito de compra

×

No hay productos en el carrito.