PHP Conference Japan 2024

Locale::composeLocale

locale_compose

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Locale::composeLocale -- locale_compose傳回排序正確且帶分隔符號的地區設定 ID

說明

物件導向風格

public static Locale::composeLocale(陣列 $subtags): 字串|false

程序風格

locale_compose(陣列 $subtags): 字串|false

傳回一個排序正確且帶有分隔符號的語系 ID,鍵值識別特定的語系 ID 子標籤,而值則是關聯的子標籤值。

參數

subtags

一個陣列,包含鍵值對列表,其中鍵值識別特定的語系 ID 子標籤,而值則是關聯的子標籤值。

注意事項:

'variant''private' 子標籤最多可以接受 15 個值,而 'extlang' 最多可以接受 3 個值。例如,允許使用後綴範圍從 0 到 14 的變體。因此,輸入陣列的鍵值可以是 variant0variant1、…、variant14。在返回的語系 ID 中,子標籤會按後綴排序, resulting in 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'),並在結果中按數字後綴排序。如果子標籤以陣列 形式提供,則沒有數量限制;順序與提供的順序相同。

<?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

另請參閱

  • locale_parse() - 傳回地區設定 ID 子標記元素的鍵值陣列

新增註釋

使用者貢獻的註釋

此頁面沒有使用者貢獻的註釋。
To Top