根据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
答案 0 :(得分:1)
结论:按设计工作。
canonicalize()
函数将语言环境字符串作为参数,而不是任意长度的字符流。 ext/intl/intl_data.h
中的PHP源定义了区域设置字符串的最大长度为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()