preg_replace

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:



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( ) .