准备sting包含slavic chars的网址(Đ - > Dj和đ - :dj)

时间:2014-09-14 12:58:41

标签: php character-encoding preg-replace iconv

我想把包含拉丁斯拉夫字符的字符串翻译成友好的网址字符串,如“š,đ。č,ć”。问题在于字母đ和Đ。

protected function NameForUrl($name) {
    // Replace chars Đ, đ

    $string = $name;
    $pattern = '/([đ])+/';
    $replacement = 'dj';
    $clean = preg_replace($pattern, $replacement, $string);

    $clean = iconv('UTF-8', 'ASCII//TRANSLIT', $clean);
    $clean = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $clean);
    $clean = strtolower(trim($clean, '-'));
    $clean = preg_replace("/[\/_|+ -]+/", '-', $clean);

    return $clean;
}

我的代码中的问题是,当preg_replace将'đ'更改为'dj'时,iconv会从'dj'中删除'j',并且我不希望它只是“d”。 应该使用什么编码才能工作,或者如果没有iconv我怎么办呢,因为有更多的蜇,š,č......?

0 个答案:

没有答案