这是我的slugify
功能:
function slugify($text) {
$text = preg_replace('~[^\\pL\d]+~u', '-', $text);
$text = trim($text, '-');
$text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);
$text = mb_strtolower($text, 'UTF-8');
$text = preg_replace('~[^-\w]+~', '', $text);
if(empty($text)) return 'n-a';
return $text;
}
这是测试:
echo slugify("españa");
在我的开发服务器中,结果是:
在我的生产服务器中,结果是:
我确定它与charset编码有关,但两台服务器都UTF-8
为default_charset
。我还能错过什么?有任何想法吗?
答案 0 :(得分:3)
问题来自iconv
功能。
在comments of the documentation中,我们可以看到:
请注意,当区域设置类别LC_CTYPE设置为C时,iconv(' UTF-8',' ASCII // TRANSLIT',...)无法正常工作或POSIX。您必须选择其他语言环境,否则所有非ASCII字符都将替换为问号。