2010-08-15 6 views
26

Come posso utilizzare str_ireplace (o qualcosa di simile) per sostituire del testo per la formattazione e quindi restituirlo con gli stessi maiuscoli?str_ireplace() con custodia del caso

Esempio:

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

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

che sarà in uscita: lA veloce volpe salta sul cane pigro marrone.

Desidero conservare la custodia originale e applicare solo la formattazione, in questo esempio, testo in grassetto.

Grazie.

risposta

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

dà "Il veloce volpe rossa salta sopra il pigro cane marrone." Se vuoi abbinare parole specifiche, puoi aggiungere dei limiti di parole: preg_replace('/\bthe\b/i', ....

Se si vuole parametrizzare la sostituzione, è possibile utilizzare preg_quote:

preg_replace('/\b' . preg_quote($word, "/") . '\b/i', "<b>\$0</b>", $original); 
+0

eccellente, grazie. – Francisc

+0

* La volpe marrone veloce salta sul cane pigro – Popnoodles

2

sostituire con la parola esatta oppure usa preg_replace:

preg_replace('/(The)/i', "<strong>$1</strong>", $original); 
+0

Grazie, mhitza. – Francisc