Penso tu debba usare delle espressioni regolari, con str_replace non puoi fare ciò che chiedi.
str_replace prende solo la stringa esatta che gli passi come chiave, non l'intera stringa di cui fa parte.
Con una regex potresti fare così (prendi con le molle il codice, lo scrivo al volo senza testarlo)
Codice PHP:
$pattern = '/([A-Za-z]+)?parole([A-Za-z]+)?/';
$stringa = "Prova per trovare parolecomposte parole semplici, superparole e superparolecomposte";
preg_match_all($pattern,$stringa,$risultato,PREG_SET_ORDER);
foreach($risultato as $value)
echo $value[0]."
";
Se non ho fatto errori dovrebbe stamparti:
parolecomposte
parole
superparole
superparolecomposte