(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 中,子標籤會按後綴排序, resulting invariant0
接著是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'
),並在結果中按數字後綴排序。如果子標籤以陣列 形式提供,則沒有數量限制;順序與提供的順序相同。
<?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