我想把包含拉丁斯拉夫字符的字符串翻译成友好的网址字符串,如“š,đ。č,ć”。问题在于字母đ和Đ。
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我怎么办呢,因为有更多的蜇,š,č......?