Proponuje skrypt który działa nie tylko na polskich znakach (działa na UTF):
function str2Url($t,$replace=null) {
$rf = array("\r","\n","\r\n","\n\r",'а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','ъ','ы','ь','э','ю','я'); $rt = array('','','','','a','b','v','g','d','e','jo','zh','z','i','j','k','l','m','n','o','p','r','s','t','u','f','h','c','ch','sh','w','','y','','je','ju','ja'); $txt = str_replace(array('^',"'",'"','`','~'),'',iconv
('UTF-8','ASCII//TRANSLIT',str_replace($rf,$rt,mb_strtolower
($t,'UTF-8')))); if(empty($replace)) return $txt; else return str_replace(' ',$replace, ereg_replace(' +',' ',preg_replace('/[^a-zA-Z0-9\s]/','',trim(str_replace(array('_','.',',','(',')','{','}','[',']','/',':',';','"','\'','-','+','=','!','@','#','$','%','^','&','?','*'),' ', $txt ))))); }
Używamy w następujący sposób:
str2Url('Litwo! Ojczyzno moja! Ty jesteś jak zdrowie. Nazywał się rówiennicą a pan Rejent był tytuł markiza.','-'); // Przekształca tekst na url
str2Url('Litwo! Ojczyzno moja! Ty jesteś jak zdrowie. Nazywał się rówiennicą a pan Rejent był tytuł markiza.'); // Tylko usuwa znaki narodowe