¿Cómo encontrar (y reemplazar) palabras con letras mayúsculas de una cadena?

$string = "WORD is the first HEJOU is the Second BOOM is the Third";
$sring = str_replce('???', '???<br>', $string);
echo $string; // <br>WORD is the first <br>HEJOU is the Second <br>BOOM is the Third

Bueno, la ilustración habla por sí sola. Quiero seleccionar todas las palabras con letras mayúsculas (no palabras que comiencen con mayúscula) y reemplazarlas con algo al frente. ¿Algunas ideas?

preguntado el 27 de agosto de 11 a las 20:08

3 Respuestas

$string = "WORD is the first HEJOU is the Second BOOM is the Third";
$string = preg_replace("#\b([A-Z]+)\b#", "<br>\\1", $string);
echo $string;

FUERA FUERA
<br>WORD is the first <br>HEJOU is the Second <br>BOOM is the Third

La expresión regular que se usa dice:

\b - Match a word boundary, zero width
[A-Z]+ - Match any combination of capital letters 
\b - Match another word boundary
([A-Z]+) - Capture the word for use in the replacement

Luego, en el reemplazo

\\1, replace with the captured group.

Respondido 28 ago 11, 00:08

Es solo un delimitador. El '#' puede ser reemplazado por otro carácter. / Es común. Parece que siempre uso # - arándano

str_replace simplemente reemplace una cadena específica por otra específica. Puedes utilizar preg_replace

print preg_replace('~\b[A-Z]+\b~','<br>\\0',$string);

contestado el 19 de mayo de 16 a las 14:05

Creo que quieres reemplazar con una referencia posterior a \\1 no \\0, que coincide con toda la entrada. - arándano

@sberry como puede ver no \ 1 en mi expresión regular. \\ 0 es una expresión regular EMPAREJADA completa. Y funciona - RiaD

Respondido 28 ago 11, 00:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.