函式:Locale::lookup()
適用版本:PHP 5 >= 5.3.0, PHP 7, PHP 8
用法:Locale::lookup() 函式用於從一個或多個語言標記中查詢最佳匹配的語言標記。它可以幫助你根據使用者的首選語言標記來選擇合適的語言環境。
語法:
public static string|false Locale::lookup(array $langtag, string $locale, bool $canonicalize = false, string $default = null)
引數:
$langtag
:一個包含一個或多個語言標記的陣列。語言標記應該遵循 BCP 47 標準。陣列中的語言標記按照優先順序排序,最高優先順序的語言標記應該位於陣列的第一個元素。$locale
:用於查詢的語言環境。語言環境應該遵循 BCP 47 標準。$canonicalize
(可選):一個布林值,指示是否將返回的語言標記規範化為 BCP 47 標準格式。預設為 false。$default
(可選):一個可選的預設語言標記,如果找不到匹配的語言標記時將被返回。
返回值:
- 如果找到匹配的語言標記,則返回最佳匹配的語言標記。
- 如果找不到匹配的語言標記,並且提供了預設語言標記,則返回預設語言標記。
- 如果找不到匹配的語言標記,並且沒有提供預設語言標記,則返回 false。
示例:
// 定義一個語言標記陣列
$langtags = ['en-US', 'fr-FR', 'de-DE'];
// 查詢最佳匹配的語言標記
$bestMatch = Locale::lookup($langtags, 'fr-FR');
echo $bestMatch; // 輸出:fr-FR
// 使用預設語言標記
$bestMatch = Locale::lookup($langtags, 'es-ES', false, 'en-US');
echo $bestMatch; // 輸出:en-US
在上面的示例中,我們定義了一個包含英語、法語和德語的語言標記陣列。然後,我們使用 Locale::lookup() 函式來查詢最佳匹配的語言標記。在第一個示例中,由於我們提供的語言環境 'fr-FR' 與陣列中的 'fr-FR' 語言標記完全匹配,所以它被返回作為最佳匹配的語言標記。在第二個示例中,由於我們提供的語言環境 'es-ES' 在陣列中找不到匹配的語言標記,所以我們使用了預設語言標記 'en-US'。因此,'en-US' 被返回作為最佳匹配的語言標記。