Jeśli tak – mam dla Ciebie małą podpowiedź String::insert()
Przydatne, jeśli potrzebujesz zdefiniowany łańcuch w którym podmieniasz tylko niektóre fragmenty:
$wiadomosc = ":name ma :pet";
echo String::insert(
$wiadomosc,
array(
"name"=>"Ala",
"pet" => "Kota"
)
); // Ala ma Kota
Z pewnością uprości to Twój kod, jeśli znikną z niego wszystkie str_replace itp.
Polecam też resztę klasy String i innych w cake/lib – często okazują się przydatne.