(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)
Locale::composeLocale -- locale_compose — 返回正确排序和分隔的区域设置 ID
面向对象风格
过程式风格
返回正确排序和分隔的区域设置 ID,键标识特定的区域设置 ID 子标签,值是关联的子标签值。
subtags一个包含键值对列表的 数组,其中键标识特定的区域设置 ID 子标签,值是关联的子标签值。
注意:
'variant'和'private'子标签最多可以取 15 个值,而'extlang'最多可以取 3 个值。例如,变体允许使用从 0 到 14 的后缀。因此,输入数组的键可以是variant0、variant1、…、variant14。在返回的区域设置 ID 中,子标签按后缀排序,导致variant0后跟variant1后跟variant2,依此类推。或者,可以将
'variant'、'private'和'extlang'值指定为特定键(例如'variant')下的数组。在这种情况下,不限制识别到的子标签的数量。
相应的区域设置标识符,或者当 subtags 为空时为 false。
示例 #1 locale_compose() 示例
<?php
$arr = array(
'language'=>'en',
'script' =>'Hans',
'region' =>'CN',
'variant2'=>'rozaj',
'variant1'=>'nedis',
'private1'=>'prv1',
'private2'=>'prv2',
);
echo locale_compose($arr);
?>示例 #2 面向对象示例
<?php
$arr = array(
'language'=>'en' ,
'script' =>'Hans',
'region' =>'CN',
'variant2'=>'rozaj',
'variant1'=>'nedis',
'private1'=>'prv1',
'private2'=>'prv2',
);
echo Locale::composeLocale($arr);
?>以上示例将输出
Locale: en_Hans_CN_nedis_rozaj_x_prv1_prv2
示例 #3 子标签限制
如果 subtags 作为带有数字后缀的单独键给出,则不支持的键会被静默忽略(在本例中为 'extlang3'),并在结果中按数字后缀排序。如果 subtags 作为 数组 给出,则没有限制;顺序按给定顺序。
<?php
$arr = array(
'language' => 'en',
'script' => 'Hans',
'region' => 'CN',
'extlang3' => 'd',
'extlang2' => 'c',
'extlang1' => 'b',
'extlang0' => 'a',
);
echo locale_compose($arr), PHP_EOL;
$arr = array(
'language' => 'en',
'script' => 'Hans',
'region' => 'CN',
'extlang' => ['a', 'b', 'c', 'd'],
);
echo locale_compose($arr), PHP_EOL;
?>以上示例将输出
en_a_b_c_Hans_CN en_a_b_c_d_Hans_CN