Documentación offline PHP master

preg_replace

master Ver versión oficial en línea Licencia CC-BY-3.0Descargado el 2026-08-02

En esta página

preg_replace

Buscar y reemplazar mediante expresión regular estándar

Descripción#

preg_replace(string $pattern, string $replacement, string $subject, [int $limit], [int $count]): string
```php

Analiza `subject` para encontrar la expresión regular `pattern` y reemplaza los resultados por `replacement`.

Para hacer coincidir una cadena exacta, en lugar de una expresión regular, se recomienda el uso de `str_replace` o `str_ireplace` en lugar de esta función.

## Parámetros

`pattern`  
El patrón a buscar. Puede ser una cadena o un array de cadenas.

También están disponibles varios [modificadores PCRE](#reference.pcre.pattern.modifiers).

`replacement`  
La cadena o un array de cadenas para el reemplazo. Si este parámetro es una cadena y el parámetro `pattern` es un array, todos los patrones serán reemplazados por esta cadena. Si los parámetros `pattern` y `replacement` son arrays, cada `pattern` será reemplazado por su `replacement` asociado. Si `replacement` tiene menos elementos que `pattern`, entonces una cadena vacía es utilizada para los `pattern` adicionales.

`replacement` puede contener referencias de la forma `\n` o `$n`. Esta última forma es recomendada. Estas referencias serán reemplazadas por el texto capturado por la \<n\>-ésima parentesis capturante del patrón. \<n\> puede tomar valores de 0 a 99, y `\0` o `$0`, corresponden al texto que satisface el patrón completo. Los paréntesis abiertos son contados de izquierda a derecha (empezando por 1) para determinar el número de paréntesis capturante. Es de notar que en los `string` literales los backslashs deben ser escapados.

Cuando se trabaja con un patrón de reemplazo donde una referencia hacia atrás es seguida directamente por un número (i.e.: colocar un número literal inmediatamente después de una referencia hacia atrás), no se puede usar la sintaxis clásica `\1` para la referencia hacia atrás. `\11`, por ejemplo, será confuso para la función `preg_replace` en el sentido de que no sabrá si se desea la referencia hacia atrás `\1` seguida del número `1` o si se desea la referencia hacia atrás `\11` seguida de "nada". En este caso, la solución es usar la sintaxis `${1}1`. Esto creará una referencia hacia atrás aislada `$1`, seguida del número literal `1`.

`subject`  
La cadena o el array que contiene las cadenas a buscar y reemplazar.

Si `subject` es un array, entonces la búsqueda y el reemplazo se realiza en cada entrada de `subject`, y el array será devuelto.

Si el array `subject` es asociativo, entonces las claves serán preservadas en el valor devuelto.

`limit`  
El número máximo de reemplazos para cada patrón en cada cadena `subject`. Por omisión, vale `-1` (sin límite).

`count`  
Si se proporciona, esta variable contendrá el número de reemplazos realizados.

## Valores devueltos

`preg_replace` devuelve un array si el parámetro `subject` es un array, o una cadena en caso contrario.

Si se encuentran coincidencias, el nuevo `subject` será devuelto, de lo contrario `subject` será devuelto sin cambios, o `null` si ocurre un error.

## Errores/Excepciones

Utilizar la opción "\e" es un error; se emite una `E_WARNING` en este caso.

Si el patrón regex pasado no se compila a una regex válida, se emite una `E_WARNING`.

## Ejemplos

Uso de referencias hacia atrás con literales numéricos
El ejemplo anterior mostrará:

    April1,2003

Uso de arrays indexados con `preg_replace`
El ejemplo anterior mostrará:

    Le lent brun grizzly saute par dessus le chien paresseux.



Ordenando los patrones y los reemplazos, se debería obtener el resultado esperado.
El ejemplo anterior mostrará:

    Le grizzly brun lent saute par dessus le chien paresseux.

Reemplazo de múltiples valores simultáneamente
El ejemplo anterior mostrará:

    $startDate = 5/27/1999

Eliminación de espacios

Este ejemplo elimina los espacios en exceso en una cadena.
Uso del parámetro `count`

```php

El ejemplo anterior mostrará:

xp***to
3

Notas#

[!NOTE] Cuando se usan arrays con los parámetros pattern y replacement, las claves son tratadas en el orden en que aparecen en el array. Esto no es necesariamente lo mismo que el orden de los índices numéricos. Si se usan índices para identificar qué pattern debe ser reemplazado por qué replacement, se recomienda hacer un ordenamiento ksort en cada array antes de llamar a preg_replace.

[!NOTE] Cuando pattern y replacement son arrays, las reglas de coincidencia funcionarán de manera secuencial. Es decir, la segunda pareja pattern/replacement operará sobre la cadena de caracteres que resulta de la primera pareja pattern/replacement, y no sobre la cadena original. Si se desea simular reemplazos funcionando en paralelo, como el intercambio de dos valores, reemplace un patrón por un sustituto intermedio, luego en una pareja posterior, reemplace este marcador intermedio por el reemplazo deseado.

```

```

Véase también#

Patrones PCRE, preg_quote, preg_filter, preg_match, preg_replace_callback, preg_split, preg_last_error, str_replace