(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)
Locale::composeLocale -- locale_compose — 返回正确排序和分隔的区域设置 ID
面向对象风格
过程式风格
返回正确排序和分隔的区域设置 ID,键标识特定区域设置 ID 子标签,值是关联的子标签值。
subtags
一个 array,包含键值对列表,其中键标识特定区域设置 ID 子标签,值是关联的子标签值。
注意:
The
'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 OO 示例
<?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
作为 array 给出,则没有限制;顺序与给出的顺序相同。
<?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