Since PHP 4.4.0 and 5.1.0, there is better way to create clean URL. Function pathauto_cleanstring() could look simple like this (pretending that '-' is a separator, which is better for Google than the default underscore '_'):
$url = $string;
$url = preg_replace('~[^\\pL0-9_]+~u', '-', $url); // substitutes anything but letters, numbers and '_' with separator
$url = trim($url, "-");
$url = iconv("utf-8", "us-ascii//TRANSLIT", $url); // TRANSLIT does the whole job
$url = strtolower($url);
$url = preg_replace('~[^-a-z0-9_]+~', '', $url); // keep only letters, numbers, '_' and separator
The obvious advantage is that you can never forget some translation pair (for example, in 4.7 release, there is currently missing š=>s conversion).
The script comes from Jakub Vrana and was originally published here: http://php.vrana.cz/vytvoreni-pratelskeho-url.php (article is Czech only).