naisi_accept_language_parse
解析浏览器 HTTP Accept-Language,返回优先级最高的一个合法语言标签。
按 RFC 9110 解析 q 权重:忽略非法标签、非法权重、q=0 和通配符,权重相同时保留 原始顺序最靠前的一项。与 URL 标签校验函数共用 BCP 47 / IANA 标准化规则。 显示名称采用 CLDR,英文语言名不足时采用 IANA Description;缺少译名不影响优先级。 现有记录缺失的显示译名已在补充数据源中填入原英文名称;私用标签无名称资料时仍为空字符串。 无完整 Locale 名称时使用基础语言名称,仍保留原标签明确给出的地区;不猜国家。 HTTP 语法允许的空格和制表符仅作为列表分隔空白处理。
函数签名
function naisi_accept_language_parse(string $accept_language): ?array
调用前提
应用入口先调用 naisi_is_ext_license_valid 并确认返回 true。只验证同一请求内已有的有效 FULL/BASIC 证明;没有证明或证明失效时立即返回失败值,不现场补做完整校验。
授权类别:LICENSE;执行模式:PROOF。许可不代替登录、租户或权限上下文;身份与数据要求见本页参数及用途说明。
参数
$accept_language
- 类型:
string - 必填:是
- 默认值:无
- 方向:输入参数。
完整 Accept-Language 字段值,例如 zh-CN,zh;q=0.9,en-US;q=0.8。
返回值
类型:array{tag:string,language:string,region:string,numeric:string,name_en:string,name_zh:string,name_native:string}|null
有合法标签时返回最高优先级语言信息;没有合法标签或未授权时整体返回 null。 缺失标量子项均为空字符串,包括无资料的显示名;不返回 null 子项。 本函数不决定站点启用的语言,调用方使用自己的语言路由表匹配 tag。 numeric 为标签中明确地区对应的三位 ISO 3166-1 数字代码字符串,保留前导零。 标签未指定地区时 region 为空字符串;无 ISO 国家/地区映射(如 es-419)时 numeric 为空字符串。 语言地区标签不代表用户实际所在国家,也不能用于推断货币。
调用示例
当前请求须满足上方调用前提;请检查实际返回值和引用输出,随机结果及数据包内容以运行环境为准。
$accept_language = 'zh-TW;q=1,en-US;q=0.001';
$result = naisi_accept_language_parse($accept_language);
var_export($result);
版本信息
- 自版本:
1.0.6 - 实现模块:
language - 授权类别:
LICENSE/PROOF - 失败回退:
null - 文档同步:
2026-10-18