Sigo pensando que el problema está en el decode inicial:
Código PHP:
<?php
ini_set("display_errors", 0);
function getUrlAmigable($s){
$s = strtolower($s);
$s = ereg_replace("[áàâãäª@]","a",$s);
$s = ereg_replace("[éèêë]","e",$s);
$s = ereg_replace("[íìîï]","i",$s);
$s = ereg_replace("[óòôõºö]","o",$s);
$s = ereg_replace("[úùûü]","u",$s);
$s = ereg_replace("[ç]","c",$s);
$s = ereg_replace("[ñ]","n",$s);
$s = preg_replace( "/[^a-zA-Z0-9\-]/", "-", $s );
$s = preg_replace( array("`[^a-z0-9]`i","`[-]+`") , "-", $s);
return trim($s, "-");
}
echo "<h3>Cadena: áé89íóú´__;<>//\"</h3>";
echo "<h3>Decode: ".utf8_decode("áé89íóú´__;<>//\"")."</h3>";
echo "<h3>Tu funcion sin decode: ".getUrlAmigable("áé89íóú´__;<>//\"")."</h3>";
echo "<h3>Tu funcion con decode: ".getUrlAmigable(utf8_decode("áé89íóú´__;<>//\""))."</h3>";
?>
Devuelve:
Cadena: áé89íóú´__;<>//"
Decode: ?9?´__;<>//"
Tu funcion sin decode: ae89iou
Tu funcion con decode: 9
Además recuerda que ereg() está desaconsejada, a ver si ahora marcha, saludos.