He copiado el codigo que has añadido...
Y nada sigue igual, apareciendo una el rombo. 
Además he modificado la función por esta: 
 Código PHP:
    function corregir_titulos($cadena){
$sef = utf8_decode($cadena);
$sef = preg_replace("/¡|¿|\?|!|\^|'|:|@|#|\$|%|&|\"|~|\+|\*|\/|\||\\|\[|\]|\(|\)|\{|\}/","",$sef);
$sef = ereg_replace("[.]", "", $sef);
$sef = preg_replace("/,/","",$sef);
$sef = preg_replace("/[áàâãª]/","a",$sef);
$sef = preg_replace("/[ÁÀÂÃ]/","A",$sef);
$sef = preg_replace("/[éèê]/","e",$sef);
$sef = preg_replace("/[ÉÈÊ]/","E",$sef);
$sef = preg_replace("/[íìî]/","i",$sef);
$sef = preg_replace("/[ÍÌÎ]/","I",$sef);
$sef = preg_replace("/[óòôõº]/","o",$sef);
$sef = preg_replace("/[ÓÒÔÕ]/","O",$sef);
$sef = preg_replace("/[úùû]/","u",$sef);
$sef = preg_replace("/[ÚÙÛ]/","U",$sef);
$sef = str_replace("ç","c",$sef);
$sef = str_replace("Ç","c",$sef);
$sef = str_replace("ñ","n",$sef);
$sef = str_replace("ñ","n",$sef);
$sef = str_replace("Ñ","N",$sef);
$sef = preg_replace("/'/","",$sef);
$sef = preg_replace("/´/","",$sef);
$sef = preg_replace("/( - |- | -| )/","-",$sef);
$sef = preg_replace("/-{2,}/","-",$sef);
$sef = preg_replace("/^-|-+$/","",$sef);
return $sef;
} 
    
  Y en la pagina tengo: 
 Código HTML:
 <meta http-equiv="content-type" content="text/html; charset=UTF-8"> 
 Y la letra que aparecia delante del rombo, ya no aparece...
Pero el rombo persiste... 
No se porque no se sustituye.
¿Alguna idea más...?