intl — PHP: неожиданное возвращаемое значение в \ Locale :: canonicalize

Согласно PHP документам: Locale::canonicalize( string $locale ) всегда возвращает строку.

После тестирования метода с несколькими входами, я всегда получаю строку …. кроме этого ввода

'char(119)+char(104)+char(115)+char(100)+char(98)+char(116)+char(101)+char(115)+char(116)',

Locale::canonicalize('char(119)+char(104)+char(115)+char(100)+char(98)+char(116)+char(101)+char(115)+char(116)') возвращается null,

Почему этот вход особенный? Это ошибка в PHP или ожидаемый, но недокументированный вывод?

Вот несколько примеров, которые я пробовал: https://gist.github.com/marcosdsanchez/e6603148f7c2257ba37d832cc40cb8f3

Docs: http://php.net/manual/en/locale.canonicalize.php

0

Решение

Вывод: работа как задумано.

canonicalize() Функция принимает в качестве аргумента строку локали, а не поток символов произвольной длины. Исходный код PHP в ext/intl/intl_data.h определяет максимальную длину строки локали, равную 80 символам:

 #define INTL_MAX_LOCALE_LEN 80

Следующие функции используют это определение и принимают string $locale в качестве аргумента и, таким образом, ограничены этим максимумом:

locale_get_primary_language()
locale_get_script()
locale_get_region()
locale_get_keywords()
locale_compose()
locale_parse()
locale_get_all_variants()
locale_get_all_variants()
locale_canonicalize()
locale_accept_from_http()
1

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector