Código PHP:
function sef_string($str) {
// Eliminar entidades HTML
$search = array('<', '>', '"', '&');
$str = str_replace($search, '', $str);
$str = preg_replace('/&(?!#[0-9]+;)/s', '', $str);
// Convertir acentos y tildes
$search = array('Á', 'É', 'Í', 'Ó', 'Ú', 'á', 'é', 'í', 'ó', 'ú', 'Ü', 'ü', 'Ñ', 'ñ', '_');
$replace = array('a', 'e', 'i', 'o', 'u', 'a', 'e', 'i', 'o', 'u', 'u', 'u', 'n', 'n', ' ');
$str = str_replace($search, $replace, strtolower(trim($str)));
// Eliminar todo lo que no sea letras, numeros o espacios y eliminar espacios dobles
$str = preg_replace("/[^a-zA-Z0-9\s]/", "", $str);
$str = preg_replace('/\s\s+/', ' ', $str);
// Convertir espacios en guiones
$str = str_replace(' ', '-', $str);
return $str;
}
$var_titulo= sef_string($row['titulo']);
Todavia estoy probando esta funcion y seguramente habra mas cosas que se le deban agregar o modificar para optimizar, pero hasta el momento me ha sido util, espero que a ti tambien.