replace je alias za str_replace, a ta funkcija ne zna da radi sa utf8... evo ti moja php funkcija koja radi to:
PHP kôd:
/**
* Nasa slova sa akcentima (č,ć,š,đ,ž) prebacuje u ascii ekvivalente (c,c,s,dj,z)
* @autor Ivan Dilber (bazirano na istoimenoj Wordpress f-ji)
* @param string $string UTF8 tekst sa nasim slovima
* @return string tekst gde su sva nasa slova zamenjena ascii ekvivalentima
*/
function remove_accents($string) {
$chars = array(
chr(196).chr(134) => 'C', chr(196).chr(135) => 'c', // ovo je za ć
chr(196).chr(140) => 'C', chr(196).chr(141) => 'c', // ovo je za č
chr(196).chr(144) => 'Dj', chr(196).chr(145) => 'dj', // ovo je za đ
chr(197).chr(160) => 'S', chr(197).chr(161) => 's', // ovo je za š
chr(197).chr(189) => 'Z', chr(197).chr(190) => 'z', // ovo je za ž
);
return strtr($string, $chars);
}
Od ovoga mozes lako da napravis smarty filter, ali mnogo je logicnije (i efikasnije) da se tekst cisti u php-u, a ne u templejtu.
EDIT: Ako hoces drugaciju transliteraciju (npr. č -> ch) samo zameni u funkciji vrednost za dati key u $chars nizu