Nie wiem, może to Cię zainteresuje.
function plCharset($string) {
$polskie = array(',',' - ',' ','ę', 'Ę', 'ó', 'Ó', 'Ą', 'ą', 'Ś', 'ś', 'ł', 'Ł', 'ż', 'Ż', 'ź', 'Ź', 'ć', 'Ć', 'ń', 'Ń','-',"'","/","?", '"', ":", 'ś', '!','.', '&', '&', '#', ';', '[',']', '(', ')', '`', '%', ''); $miedzyn = array('-', '-' ,'-','e', 'E', 'o', 'O', 'A', 'a', 'S', 's', 'l', 'L', 'z', 'Z', 'z', 'Z', 'c', 'C', 'n', 'N','-',"" ,"" ,"" ,"" ,"" ,'s','' ,'' , '' , '' , '' , '' , '' , '', '' , '' , '' , '' , '');
// usuń wszytko co jest niedozwolonym znakiem
// zredukuj liczbę myślników do jednego obok siebie
// usuwamy możliwe myślniki na początku i końcu
$string = trim($string, '-');
// na wszelki wypadek
return $string;
}