Que tal,
Yo lo solucioné extendiendo el helper de esta forma.
Creas un archivo llamado my_helper_url.php dentro de
tu_aplicacion/helpers/ y pones este código:
Código PHP:
<?php
function url_title($str, $separator = 'dash', $lowercase = FALSE){
if ($separator == 'dash') {
$search = '_';
$replace = '-';
} else {
$search = '-';
$replace = '_';
}
$trans = array(
$search => $replace,
"á" => 'a',
"é" => 'e',
"í" => 'i',
"ó" => 'o',
"ú" => 'u',
"Á" => 'A',
"É" => 'E',
"Í" => 'I',
"Ó" => 'O',
"Ú" => 'U',
"ñ" => 'n',
"Ñ" => 'Ñ',
"ä" => 'a',
"ë" => 'e',
"ï" => 'i',
"ö" => 'o',
"ü" => 'u',
'&\#\d+?;' => '',
'&\S+?;' => '',
'\s+' => $replace,
'[^a-z0-9\-\._]' => '',
$replace.'+' => $replace,
$replace.'$' => $replace,
'^'.$replace => $replace,
'\.+$' => ''
);
$str = strip_tags($str);
foreach ($trans as $key => $val)
{
$str = preg_replace("#".$key."#i", $val, $str);
}
if ($lowercase === TRUE)
{
$str = strtolower($str);
}
return trim(stripslashes($str));
}
Que lo que hace es reemplazar la función por una que tiene un array con las vocales con tilde y la ñ.
Saludos.