Originariamente inviato da stoppy
Ok apposto!
Mi spieghi per cortesia come funzione quell'espressione?
il (?i) serve per dire che la sostituzione deve essere case insensitive, cioè indifferente alle maiuscole e minuscole. cerca la parola casa in qualsiasi formato e la sostituisce con castello.

Attenzione che se la stringa contenesse anche accasato verrebbe sostituita con accastelloto.
Quindi se vuoi limitare la sostituzione alla parola esatta la tua espressione regolare diventerebbe

echo preg_replace("#(?i)\bcasa\b#",'castello',$stringa) ;

dove \b è il delimitatore. La mia 'scienza' sulle espressioni regolari finisce qui.