Я хочу перевести строки, содержащие латинские славянские символы, такие как «š, đ. Č, ć», в строки дружественных URL. Проблема с буквой đ и Đ.
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 удаляет ‘j’ из ‘dj’, и я не хочу, чтобы это было просто «d».
Какую кодировку следует использовать, чтобы это работало, или как я могу сделать это без iconv, так как есть еще такие строки, как š, ć, č …?
Задача ещё не решена.
Других решений пока нет …