preg_replace

(PHP 3>= 3.0.9, PHP 4 )

preg_replace -- Lleva a cabo la búsqueda de una expresión y su sustitución

Descripción

mixed preg_replace ( mixed pattern, mixed replacement, mixed subject)

Busca en subject los emparejamientos con pattern y los sustituye por replacement.

replacement puede contener referencias de la forma \\n. Éstas serán sustituidas por el texto obtenido por el patrón del paréntesis nésimo. n puede tener un valor de cero a noventa y nueve, y \\0 se refiere al texto casado por el patrón completo. Para obtener el número del subpatrón de búsqueda, los paréntesis abiertos son contados de izquierda derecha tomando el primero como uno.

Si el patrón no es encontrado en subject, entonces no se realizarán cambios.

Todos los parámetros de la función preg_replace() pueden ser un array.

Si subject es un array, entonces la búsqueda y sustitución es realizada para todos los elementos de subject, y el valor devuelto es también un array.

Si pattern y replacement son arrays, entonces preg_replace() toma un valor desde cada array y los usas para buscar y sustituir sobre subject. Si replacement tiene menos valores que pattern, entonces la cadena vacía es usada como valor para el resto de sustituciones. Si pattern es una array y replacement es una cadena, entonces esta cadena de sustitución es usada para todos los valores de pattern. Sin embargo, lo contrario no tiene sentido.

El modificador /e hace que la función preg_replace() trate el parámetro replacement como código PHP después de que la apropiada sustitución sea hecha. Atención, asegúrate que replacement es un código PHP correcto, de otro modo PHP dará un error de parse en la línea que contenga preg_replace().

Nota: Este modificador fue añadido en PHP 4.0.

Ejemplo 1. Sustituir varios valores

$patterns = array("/(19|20\d{2})-(\d{1,2})-(\d{1,2})/", "/^\s*{(\w+)}\s*=/");
$replace = array("\\3/\\4/\\1", "$\\1 =");
print preg_replace($patterns, $replace, "{startDate} = 1999-5-27");
Esta ejemplo dará como resultado:
$startDate = 5/27/1999

Ejemplo 2. Usar el modificador /e

preg_replace("/(<\/?)(\w+)([^>]*>)/e", "'\\1'.strtoupper('\\2').'\\3'", $html_body);

Pondrá en mayúscula todos los tags HTML del texto de entrada.

Examina también preg_match(), preg_match_all(), y preg_split().