Это мое 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
, Что еще я мог упустить? Есть идеи?
Проблема исходит от iconv
функция.
в комментарии документации, мы можем увидеть:
Обратите внимание, что iconv (‘UTF-8’, ‘ASCII // TRANSLIT’, …) не работает должным образом, когда для категории локали LC_CTYPE установлено значение C или POSIX. Вы должны выбрать другую локаль, иначе все не-ASCII символы будут заменены на вопросительные знаки.
Других решений пока нет …