• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

如何使用PHP中的国际化功能来查看货币及日期信息

php 搞代码 4年前 (2022-01-04) 19次浏览 已收录 0个评论

做为一门在世界范围内广泛使用的编程语言,国际化能力往往是衡量一来源gao.dai.ma.com搞@代*码网个编程语言是否能够大范围流行的重要内容。特别是对于PHP这种以Web页面编程为主战场的语言来说,国际化能力更是重中之重。今天我们简单的学习一下与国际化相关的扩展及函数库。

在 PHP 中,已经为我们准备好了很多国际化相关的扩展及函数库,今天我们先来简单的学习一下,后面在学习到具体的 国际化与字符编码支持 相关的函数库时再进行深入的讲解学习。

获取当前浏览器用户的所在地

首先,我们来获取当前访问用户的所在地信息,也就是我们常见的 zh-cn 、 en-us 这类的地区语言编码信息。

// $_SERVER['HTTP_ACCEPT_LANGUAGE'] = zh-CN,zh;q=0.9;
$browserLocale = Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);

print_r($browserLocale);
echo '<br/>';
// zh

浏览器传递的这类区域信息是 zh-CN,zh;q=0.9; 这种形式的,我们可以通过 Locale::acceptFromHttp() 获得具体的区域信息。不过需要注意的是,不管是 zh-cn 还是 zh-tw ,返回的都是 zh ,而英文则会返回具体的是 en-us 还是 en-gd 之类的内容,也就是说这个函数对于我们中文语言的结果获取是有问题的。

$locale = ['en', 'fr-FR', 'da, en-gb;q=0.8, en;q=0.7', 'zh-cn', 'zh-tw', 'en-us', 'en-ca', 'ja-jp'];
foreach($locale as $code){
    print_r(Locale::acceptFromHttp($code));
    echo '<br/>';
}
// en
// fr_FR
// da
// zh
// zh
// en_US
// en_CA
// ja_JP

我们可以手动来指定区域信息,可以看出除了 zh 之外其它的都是可以获取到正常的具体区域信息的。这点是我们使用这个函数时需要注意的地方。

获取指定地区所在地的标准数字信息

对于我们中国人来,数字比较习惯的是百、千、万位,一般也不太需要区分,而西方国家则喜欢三位一个逗号的分隔开来,也就是对应他们的英文数字习惯,比如 10000,在西方表示中是 10,000 ,英语是 ten thousand , 10000000 表示为 10,000,000 ,英语是 ten million 。因此,在 PHP 中,也是有相对于这种情况的数字表示形式,也就是为普通数字加上逗号以表示西方数字标准格式。

$locale = ['en', 'fr-FR', 'en-gb', 'zh-cn','en-us', 'ko-kr', 'ja-jp'];

$money = 1234567.89;

foreach($locale as $code){
    $numberformat = new NumberFormatter($code, NumberFormatter::DECIMAL);
    echo $code, ":";
    echo $numberformat->format($money), ', ';
    echo $numberformat->parse($numberformat->format($money)), '<br/>';
}
// en:1,234,567.89, 1234567.89
// fr-FR:1 234 567,89, 
// en-gb:1,234,567.89, 1234567.89
// zh-cn:1,234,567.89, 1234567.89
// en-us:1,234,567.89, 1234567.89
// ko-kr:1,234,567.89, 1234567.89
// ja-jp:1,234,567.89, 1234567.89

我们直接使用 format() 方法,就可以获得指定地区的标准数字表示形式。可以看出亚洲地区的都是和欧美国家相同的,但法国则是使用空格进行分隔的。

获取指定地区所在地的货币符号信息

既然有数字格式的不同了,那么货币形式的区别就也是类似的形式了,只不过我们在使用 NumberFormatter 类的时候需要指定后面的数字类型常量为货币形式 NumberFormatter::PERCENT 。

oreach($locale as $code){
    $numberformat = new NumberFormatter($code, NumberFormatter::PERCENT);
    echo $code, ":";
    echo $numberformat->format($money), '<br/>';
}
// en:¤1,234,567.89
// fr-FR:1 234 567,89 €
// en-gb:£1,234,567.89
// zh-cn:¥1,234,567.89
// en-us:$1,234,567.89
// ko-kr:₩1,234,568
// ja-jp:¥1,234,568

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:如何使用PHP中的国际化功能来查看货币及日期信息

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址