PHP: \Locale::canonicalize 中的意外 return 值

PHP: Unexpected return value in \Locale::canonicalize

根据 PHP 文档:Locale::canonicalize( string $locale ) 总是 returns 一个字符串。

用几个输入测试方法后,我总是得到一个字符串....除了这个输入

'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)') returns null.

为什么那个输入很特别?这是 PHP 中的错误还是预期但未记录的输出?

以下是我尝试过的一些示例:https://gist.github.com/marcosdsanchez/e6603148f7c2257ba37d832cc40cb8f3

文档:http://php.net/manual/en/locale.canonicalize.php

结论:按设计工作。

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()