用 iconv 替换 URL 中的特殊字符不起作用

Replacing special characters from URL with iconv doesn't work

我的一些 url 有一个小问题。假设 that $result['title'] = Citroën

在我的url中,我希望这个词变成"citroen"。下面的函数做的一切都是正确的,除了它删除了“ë”,所以我的 url 变成了 "citron".

<?php echo strtolower(preg_replace('/[^A-Za-z0-9\-]/', '', str_replace(' ', '-', $result['title'])));?>

我以为我可以使用 iconv... 解决这个问题,但它不起作用。 "Citroën" 仍然被 "citron" 取代。

<?php echo strtolower(preg_replace('/[^A-Za-z0-9\-]/', '', str_replace(' ', '-', iconv('UTF-8', 'ASCII//TRANSLIT', $result['title']))));?>

那么,我在这里缺少什么?

好的,我明白了。我需要设置目标语言环境。以下代码有效(因此 "Citroën" 变为 "citroen"):

<?php setlocale(LC_ALL, 'en_GB.utf8'); echo strtolower(preg_replace('/[^A-Za-z0-9\-]/', '', str_replace(' ', '-', iconv('UTF-8', 'ASCII//TRANSLIT', $result['titel']))));?>