str ireplace () con mantenimiento del caso


¿Cómo puedo usar str_ireplace (o algo similar) para reemplazar algún texto para formatear y luego devolverlo con las mismas mayúsculas?

Ejemplo:

$original="The quick red fox jumps over the lazy brown dog.";
$find="thE";

print str_ireplace($find,'<b>'.$find.'</b>',$original);

Que producirá: El zorro rojo rápido salta sobre el perro marrón perezoso.

Quiero que mantenga el caso original y solo aplique el formato, en este ejemplo, texto en negrita.

Gracias.

Author: Charles, 2010-08-16

2 answers

$original = "The quick red fox jumps over the lazy brown dog.";
$new = preg_replace("/the/i", "<b>\$0</b>", $original);

Da " Elzorro rojo rápido salta sobre el perro marrón perezoso."Si desea hacer coincidir palabras específicas, puede agregar límites de palabras: preg_replace('/\bthe\b/i', ....

Si desea parametrizar el reemplazo, puede usar preg_quote:

 preg_replace('/\b' . preg_quote($word, "/") . '\b/i', "<b>\$0</b>", $original);
 39
Author: Artefacto,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-15 23:54:31

O bien reemplazar con la palabra exacta, o utilizar preg_replace:

preg_replace('/(The)/i', "<strong>$1</strong>", $original);
 2
Author: mhitza,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-15 23:58:12