可以';t转换UTF-8'ø';转换为ASCII


Can't convert UTF-8 'ø' to ASCII

函数转换所有其他字符,只是"ø"什么是UTF-8字符,而不是,所有其他字符(如"Ç,Č,Ć,Ç,Š,ž,Đ,Ж"等(正常转换为ascii。。。

这是我使用的功能:

function toAscii($str, $replace=array(), $delimiter='-') {
    if( !empty($replace) ) {
        $str = str_replace((array)$replace, ' ', $str);
    }
    $clean = iconv('UTF-8', 'ASCII//TRANSLIT', $str);
    $clean = preg_replace("/[^a-zA-Z0-9'/_|+ -]/", '', $clean);
    $clean = strtolower(trim($clean, '-'));
    $clean = preg_replace("/['/()_|+ -]+/", $delimiter, $clean);
    return $clean;
}

我需要它的ascii网址。

iconv"音译为ascii"函数不可靠。从任意的unicode代码点到ascii,并不总是有一个通用的音译或有意义的音译。没有一个unicode标准来说明如何做到这一点(尽管有一次有一个草案,但由于不成功而被放弃(。所以,无论如何,没有一种可靠的方法可以做到这一点,或者iconv函数也不是。事情就是这样。

正如其他人所评论的那样,有一种标准的方法可以将unicode放入URL中。尝试将任意unicode代码点音译为ascii不太可能是解决问题的正确方法;即使对于正在发生的音译,你也可能失去意义。