校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > PHP中針對區域語言標記信息的操作

PHP中針對區域語言標記信息的操作

熱門標簽:天津電銷外呼系統違法嗎 400電話個人能不能辦理 手機外呼系統什么原理 凱立德地鐵站地圖標注 銀行信貸電話機器人 溫州外呼系統招商 滄州電銷外呼系統價格 合肥ai電銷機器人費用 上海400客服電話怎么申請

相信大家對 zh_CN 這個東西絕對不會陌生,不管是 PHP 中,還是在我們的網頁上,都會見到它的身影。其實這就是指定我們的顯示編碼是什么國家或者地區的,使用何種語言。對于這種區域語言的標記來說,PHP 中也有很多好玩的內容。今天,我們要學習的 Locale 類就是操作區域語言相關內容的,它無法被實例化,所有全部功能方法都是靜態的。

獲取及設置當前的區域語言信息

首先就是我們可以動態地獲取和設置相應的區域語言信息。

// # echo $LANG;
// en_US.UTF-8

// php.ini
// intl.default_locale => no value => no value

echo Locale::getDefault(), PHP_EOL; // en_US_POSIX
ini_set('intl.default_locale', 'zh_CN');
echo Locale::getDefault(), PHP_EOL; // zh_CN
Locale::setDefault('fr');
echo Locale::getDefault(), PHP_EOL; // fr

默認情況下,使用 getDefault() 方法獲得的是 php.ini 文件中的 intl.default_locale 配置的內容。如果在 php.ini 中也沒有配置的話,就會取操作系統的 $LANG 值里面的內容,也就是我們上面例子中輸出的 en_US_POSIX ,POSIX 表示的就是來自操作系統的配置。

使用 ini_set() 直接修改 ini 的配置或者使用 setDefault() 方法都是可以動態地修改當前的區域語言設置的。

關于語言標記的規則

在繼續學習下面的內容之前,我們先來學習一下語言標記的規范。對于大多數人來說,可能只接觸過 en_US 、 zh_CN 這類的標記,但其實它的完整定義是很長的,只是我們使用這種簡寫的方式時,很多內容會以默認的形式提供。完整的標記規則是:

language-extlang-script-region-variant-extension-privateuse
語言文字種類-擴展語言文字種類-書寫格式-國家和地區-變體-擴展-私有

也就是說,我們的 zh_CN 可以這樣寫:

zh-cmn-Hans-CN-Latn-pinyin

代表的是:zh 語言文字種類,Hans 書寫格式為簡體中文,cmn 普通話,CN 國家和地區,Latn 變體拉丁字母,pinyin 變體拼音。

是不是感覺突然一下這么簡單的東西一下子變得高大上了。另外,zh- 這個前綴現在已經不是推薦使用的了,zh- 現在已經不是語言 code 了,而是 macrolang 也就是宏語言,我們直接使用 cmn 、 yue(粵語)、wuu(吳語)、hsn(湘語,湖南話)這類的就可以當做 language 來使用了。因此,上面的那一段也可以這么寫:

cmn-Hans-CN-Latn-pinyin

在上篇文章中,我們講 NumberFormatter 時說過可以直接獲得中文的數字格式的輸出,現在我們想要繁體的結果呢?很簡單,加上 Hant 標識書寫格式為繁體中文即可。

關于語言標記規則的內容,大家可以看看文末知乎的參考鏈接,介紹的更為詳盡。

$fmt = new NumberFormatter('zh-Hant', NumberFormatter::SPELLOUT);
echo $fmt->format(1234567.891234567890000), PHP_EOL; 
// 一百二十三萬四千五百六十七點八九一二三四五六七九

獲取指定語言標記規則中的各類信息

學習了語言標記的規則之后能干什么呢?Locale 類最主要的功能就在于可以分析獲取這些屬性信息。

單獨獲取各種屬性信息

echo Locale::getDisplayLanguage('cmn-Hans-CN-Latn-pinyin', 'zh_CN'), PHP_EOL; // cmn
echo Locale::getDisplayLanguage('zh-Hans-CN-Latn-pinyin', 'zh_CN'), PHP_EOL; // 中文

echo Locale::getDisplayName('cmn-Hans-CN-Latn-pinyin', 'zh_CN'), PHP_EOL; // cmn(簡體,中國,LATN_PINYIN)
echo Locale::getDisplayName('zh-Hans-CN-Latn-pinyin', 'zh_CN'), PHP_EOL; // 中文(簡體,中國,LATN_PINYIN)

echo Locale::getDisplayRegion('cmn-Hans-CN-Latn-pinyin', 'zh_CN'), PHP_EOL; // 中國
echo Locale::getDisplayRegion('zh-Hans-CN-Latn-pinyin', 'zh_CN'), PHP_EOL; // 中國

echo Locale::getDisplayScript('cmn-Hans-CN-Latn-pinyin', 'zh_CN'), PHP_EOL; // 簡體中文
echo Locale::getDisplayScript('zh-Hans-CN-Latn-pinyin', 'zh_CN'), PHP_EOL; // 簡體中文

echo Locale::getDisplayVariant('cmn-Hans-Latn-pinyin', 'zh_CN'), PHP_EOL; // LATN_PINYIN
echo Locale::getDisplayVariant('zh-Hans-CN-Latn-pinyin', 'zh_CN'), PHP_EOL; // LATN_PINYIN

我們分別使用兩種標記方式來測試代碼,可以看到結果的對比。

  • getDisplayLanguage() 方法用于獲取顯示的語言信息,也就是規則中的 language 內容。
  • getDisplayName() 方法用于獲取標準的語言名稱,可以看到內容更加地豐富。
  • getDisplayRegion() 方法很明顯地就是獲取到了國家信息。
  • getDisplayScript() 獲取到的是書寫格式的信息。
  • getDisplayVariant() 獲取到的就是變體信息

批量獲取屬性信息

當然,我們也可以批量地獲取到一些語言相關的信息。

$arr = Locale::parseLocale('zh-Hans-CN-Latn-pinyin');
if ($arr) {
    foreach ($arr as $key => $value) {
        echo "$key : $value ", PHP_EOL;
    }
}
// language : zh
// script : Hans
// region : CN
// variant0 : LATN
// variant1 : PINYIN

使用 parseLocale() 方法就能獲取到一個語言標記中的各類信息并保存在數組中,鍵為標記規則名,值為對應的內容,看看是不是和我們上面介紹的內容是一樣的。

獲取所有變體信息

從上面的代碼中可以看出,我們有兩個變體信息,這個也可以通過一個 getAllVariants() 方法來直接獲得語言標記中的所有變體信息的數組。

$arr = Locale::getAllVariants('zh-Hans-CN-Latn-pinyin');
var_export($arr);
echo PHP_EOL;
//  array (
//     0 => 'LATN',
//     1 => 'PINYIN',
//   )

獲取字符集相關信息

echo Locale::canonicalize('zh-Hans-CN-Latn-pinyin'), PHP_EOL; // zh_Hans_CN_LATN_PINYIN

$keywords_arr = Locale::getKeywords('zh-cn@currency=CMY;collation=UTF-8');
if ($keywords_arr) {
    foreach ($keywords_arr as $key => $value) {
        echo "$key = $value", PHP_EOL;
    }
}
// collation = UTF-8
// currency = CMY

canonicalize() 方法用于規范化地顯示語言標記信息,可以看到它把我們的中劃線變成了下劃線并且將后面的各種屬性轉成了大寫,這就是規范化的寫法。不過對于我們的應用程序和網頁來說中劃線以及大小寫都是支持的。當然,大家最好還是按照標準的寫法來定義。

getKeywords() 用于從 @ 符號后獲取語言相關的信息屬性,比如我們定義的這個 zh-cn ,然后定義了它的貨幣為 CMY ,字符集為 UTF-8 ,直接通過 getKeywords() 就能獲取貨幣和字符集屬性的數組。

匹配判斷語言標記信息

對于語言標記來說,我們可以判斷給定的兩個標記之間是否相互匹配,比如:

echo (Locale::filterMatches('cmn-CN', 'zh-CN', false)) ? "Matches" : "Does not match", PHP_EOL;
echo (Locale::filterMatches('zh-CN-Latn', 'zh-CN', false)) ? "Matches" : "Does not match", PHP_EOL;

當然,我們也可以使用另一個 lookup() 方法來確定給定的一系列語言標記哪個與指定的標記最接近。

$arr = [
    'zh-hans',
    'zh-hant',
    'zh',
    'zh-cn',
];
echo Locale::lookup($arr, 'zh-Hans-CN-Latn-pinyin', true, 'en_US'), PHP_EOL; // zh_hans

生成一個標準規則的語言標記

既然能夠獲取各類語言標記的屬性信息,那么我們能不能生成一個標準的語言標記內容呢?

$arr = [
    'language' => 'en',
    'script' => 'Hans',
    'region' => 'CN',
    'variant2' => 'rozaj',
    'variant1' => 'nedis',
    'private1' => 'prv1',
    'private2' => 'prv2',
];
echo Locale::composeLocale($arr), PHP_EOL; // en_Hans_CN_nedis_rozaj_x_prv1_prv2

沒錯,composeLocale() 方法根據一個數組格式的內容,就可以生成一個完整標準的語言標記格式內容。當然,這個測試代碼是亂寫的,相當于是一個 en_CN 的標記,正常不會這么寫的。

acceptFromHttp 從請求頭中讀取語言信息

另外,Locale 類中還提供了一個從 header 頭中的 Accept Language 中獲取客戶瀏覽器語言信息的方法。

// Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);

echo Locale::acceptFromHttp('en_US'), PHP_EOL; // en_US
echo Locale::acceptFromHttp('en_AU'), PHP_EOL; // en_AU

echo Locale::acceptFromHttp('zh_CN'), PHP_EOL; // zh
echo Locale::acceptFromHttp('zh_TW'), PHP_EOL; // zh

不過從測試的結果來說,其實它只需要一個字符串參數就可以了,所以我們在命令行也可以測試它。需要注意的是,對于中文來說,它不能返回區域信息,只能返回 language 信息。

總結

這個 Locale 類相關的內容其實在筆者日常的開發中基本沒怎么接觸過,但相信不少做跨境項目的同學應該多少對它們會有一些了解。只能說業務接觸不到,那就只能先簡單地學習一下看看了,同樣地,以后大家遇到相關的業務需求時,別忘了它們的存在哦!

測試代碼:

參考文檔:

https://www.php.net/manual/zh/class.locale.php

https://www.zhihu.com/question/20797118/answer/63480740

到此這篇關于PHP中針對區域語言標記信息的操作的文章就介紹到這了,更多相關PHP區域語言標記信息內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • php將html轉成wml的WAP標記語言實例
  • php去除html標記的原生函數詳解
  • php正則取img標記中任意屬性(正則替換去掉或改變圖片img標記中的任意屬性)
  • 解析PHP正則提取或替換img標記屬性
  • php 去除html標記--strip_tags與htmlspecialchars的區別詳解
  • PHP壓縮html網頁代碼(清除空格,換行符,制表符,注釋標記)

標簽:白城 赤峰 七臺河 洛陽 酒泉 金華 怒江 溫州

巨人網絡通訊聲明:本文標題《PHP中針對區域語言標記信息的操作》,本文關鍵詞  PHP,中,針對,區域,語言,標記,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP中針對區域語言標記信息的操作》相關的同類信息!
  • 本頁收集關于PHP中針對區域語言標記信息的操作的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    欧美少妇性性性| 免费久久99精品国产| 欧美日韩国产大片| 亚洲成人免费在线观看| 日本高清视频一区二区| 国产精品久久久久一区二区三区| 精品国产网站在线观看| 日韩欧美一级二级三级久久久| 欧美一三区三区四区免费在线看| 91精品国产aⅴ一区二区| 欧美日韩中字一区| 欧美电影精品一区二区| 久久影院电视剧免费观看| 国产精品久久久久久户外露出 | 精品一区二区三区久久| 肉丝袜脚交视频一区二区| 免费av成人在线| 99久久伊人久久99| 欧美日韩在线不卡| 3d动漫精品啪啪1区2区免费| 久久美女艺术照精彩视频福利播放| 国产女人18毛片水真多成人如厕| 亚洲嫩草精品久久| 国产一区二区三区免费看| 欧美视频在线播放| 亚洲国产精品成人综合| 蜜桃一区二区三区在线观看| 99re66热这里只有精品3直播| 日韩一级高清毛片| 亚洲欧美电影院| 91毛片在线观看| 欧美国产日韩亚洲一区| 久久99精品久久久久久国产越南 | 制服视频三区第一页精品| 国产精品天天看| 国产91综合一区在线观看| 久久蜜桃一区二区| 久99久精品视频免费观看| 欧美mv日韩mv亚洲| 日韩福利电影在线| 欧美日韩精品一区二区在线播放| 一区二区三区小说| 欧美在线综合视频| 亚洲在线一区二区三区| 亚洲精品中文字幕在线观看| 国产精品一色哟哟哟| 欧美不卡一区二区三区四区| 精品一区二区成人精品| 欧美精品aⅴ在线视频| 高清成人在线观看| 国产精品久久久久四虎| 色综合一区二区| 日韩精品视频网| 国产日韩欧美精品电影三级在线 | 精品视频一区 二区 三区| 日产国产欧美视频一区精品| 国产99久久久久| 国产欧美视频一区二区| 91免费看`日韩一区二区| 亚洲第一久久影院| 久久久另类综合| 欧美性大战久久| 日本v片在线高清不卡在线观看| 欧美一区二区私人影院日本| 麻豆成人综合网| 亚洲三级久久久| 精品国产电影一区二区 | 国产蜜臀av在线一区二区三区 | 国产精品久久精品日日| 欧美日韩视频一区二区| 国产一区欧美一区| 精品久久久久一区二区国产| 国内精品写真在线观看| 亚洲国产日韩精品| 日韩一区中文字幕| 国产视频911| 精品福利一区二区三区免费视频| 91一区在线观看| 国产一区二区0| 五月天精品一区二区三区| 国产精品三级视频| 欧美精彩视频一区二区三区| 欧美大度的电影原声| 欧美一区二区视频观看视频| 91久久精品一区二区二区| 成人黄色大片在线观看| 精品日韩一区二区三区| 石原莉奈在线亚洲二区| 亚洲激情图片一区| 亚洲欧洲精品一区二区三区| 国产精品视频麻豆| 亚洲婷婷国产精品电影人久久| 国产精品麻豆视频| 国产欧美综合在线| 国产精品久99| 99热这里都是精品| 一本久道中文字幕精品亚洲嫩| eeuss鲁一区二区三区| 免费在线视频一区| 91麻豆精品国产91久久久久久| 欧美午夜精品一区二区三区| 欧美日韩国产在线观看| 精品日韩欧美一区二区| 国产日韩精品一区二区浪潮av| 亚洲精品中文字幕在线观看| 日韩制服丝袜av| av在线播放一区二区三区| 在线免费观看日韩欧美| 欧美成人a在线| 有码一区二区三区| 亚洲天堂a在线| 日韩精品亚洲一区| 99r国产精品| 久久蜜桃香蕉精品一区二区三区| 亚洲欧洲日产国产综合网| 亚洲三级电影全部在线观看高清| 亚洲乱码国产乱码精品精小说 | 麻豆成人免费电影| 色呦呦日韩精品| 久久精品亚洲麻豆av一区二区| 亚洲一区二区三区影院| aaa国产一区| 中文字幕不卡在线播放| 国内外成人在线| 日韩欧美一二区| 亚洲中国最大av网站| 国产精品91一区二区| 欧美mv日韩mv国产网站| 亚洲黄色小视频| 91黄色激情网站| 亚洲午夜一区二区| 在线精品亚洲一区二区不卡| 中文字幕一区二区三区四区 | 91麻豆精品国产综合久久久久久| 亚洲视频中文字幕| 91免费观看国产| 亚洲色图另类专区| 精品视频一区三区九区| 天堂久久一区二区三区| 69久久夜色精品国产69蝌蚪网| 伊人性伊人情综合网| 欧美日韩一区二区三区在线看 | 韩国v欧美v亚洲v日本v| 久久久久国产成人精品亚洲午夜| 国产酒店精品激情| 国产三级一区二区三区| 成人动漫一区二区| 午夜视频在线观看一区二区三区| 91精品国产综合久久精品图片| 国产自产2019最新不卡| 自拍偷在线精品自拍偷无码专区| 欧美日韩高清不卡| 国产成人免费在线视频| 一区二区三区在线影院| 欧美videos中文字幕| 99久久久久久| 国产在线精品一区二区三区不卡| 亚洲少妇中出一区| 欧美精品一区二区三区四区| 91激情在线视频| www.欧美亚洲| 久久成人羞羞网站| 亚洲乱码一区二区三区在线观看| 精品国产乱子伦一区| 欧美日韩亚州综合| 色94色欧美sute亚洲线路一ni | 欧美精品一区二区三区在线播放| 在线观看成人小视频| 97国产精品videossex| 国产成人在线视频网站| 国精产品一区一区三区mba桃花 | 中文字幕在线观看不卡| 精品国产一区二区三区av性色| 正在播放一区二区| 欧美日韩在线不卡| 日本一区二区视频在线观看| www久久精品| 国产日韩欧美a| 国产精品五月天| 亚洲精品一区在线观看| 日韩欧美精品在线视频| 欧美videossexotv100| 久久久久国产精品麻豆| 中文一区在线播放| 亚洲精品成人少妇| 午夜成人在线视频| 国产在线精品一区二区不卡了| 美女视频第一区二区三区免费观看网站| 午夜精品久久久久久久蜜桃app| 性做久久久久久免费观看| 久久国产精品免费| av高清久久久| 91精品国产综合久久婷婷香蕉| 久久亚洲捆绑美女| 亚洲综合丝袜美腿| 岛国精品在线播放| 91精品在线免费观看| 国产精品美女一区二区在线观看| 亚洲国产精品人人做人人爽| 粉嫩av一区二区三区在线播放 |