кодировка символов — возвращаемое значение функции Php Slugifiy на 2 серверах отличается

Это мое 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");

В моем сервере разработки результат:

  • Espana

В моем производственном сервере результат:

  • Espaa

Я уверен, что это как-то связано с кодировкой charset, но оба сервера имеют UTF-8 как default_charset, Что еще я мог упустить? Есть идеи?

0

Решение

Проблема исходит от iconv функция.
в комментарии документации, мы можем увидеть:

Обратите внимание, что iconv (‘UTF-8’, ‘ASCII // TRANSLIT’, …) не работает должным образом, когда для категории локали LC_CTYPE установлено значение C или POSIX. Вы должны выбрать другую локаль, иначе все не-ASCII символы будут заменены на вопросительные знаки.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]