¿Cómo puedo obtener las coincidencias cuando uso preg_replace en PHP?

votos
49

Intento tomar las letras mayúsculas de un par de palabras y envolverlas en etiquetas de tramo. Estoy usando preg_replace para extraer y envolver, pero no está produciendo nada.

preg_replace(/[A-Z]/, <span class=\initial\>$1</span>, $str)
Publicado el 05/08/2008 a las 01:35
fuente por usuario
En otros idiomas...                            


4 respuestas

votos
50

Debes poner el patrón entre paréntesis /([A-Z])/, así:

preg_replace("/([A-Z])/", "<span class=\"initial\">$1</span>", $str)
Respondida el 05/08/2008 a las 01:36
fuente por usuario

votos
26

\0 también coincidirá con toda la expresión coincidente sin realizar una captura explícita utilizando paréntesis.

preg_replace("/[A-Z]/", "<span class=\"initial\">\\0</span>", $str)

Como siempre, puede ir a php.net/preg_replace o php.net/<cualquier término de búsqueda> para buscar la documentación rápidamente. Quoth la documentación:

\ 0 o $ 0 se refiere al texto que coincide con el patrón completo.

Respondida el 28/08/2008 a las 10:02
fuente por usuario

votos
8

De la documentación preg_replace en php.net:

El reemplazo puede contener referencias de la forma \ n o (desde PHP 4.0.4) $ n, siendo esta última la preferida. Cada referencia será reemplazada por el texto capturado por el n-ésimo patrón entre paréntesis.

Vea el ejemplo de Flubba.

Respondida el 05/08/2008 a las 02:39
fuente por usuario

votos
6

Use paréntesis alrededor de su captura deseada.

Respondida el 23/06/2009 a las 18:54
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more