返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >怎么使用PHP中的国际化功能来查看货币及日期信息
  • 656
分享到

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

2023-06-20 12:06:17 656人浏览 安东尼
摘要

小编给大家分享一下怎么使用PHP中的国际化功能来查看货币及日期信息,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!获取当前浏览器用户的所在地首先,我们来获取当前访问用户的所在地信息,也就是我们常见的 zh-cn 、 en-u

小编给大家分享一下怎么使用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

看出来了吗,当指定了货币形式后,format() 出来的结果直接就带上了货币符号。第一个 en 的货币符号其实就是国际通用货币符号,而日元和我们人民币的符号是相同的,这也是一个有趣的历史知识,大家可以自行查询下。

获取指定地区所在地的完整日期

最后就是获取的各地的日期标准格式。其实现在大家通用的都是 yyyy-mm-dd 这种形式来表示日期,不过正式规范的日期标准格式各个地区还是有所不同的。

$date = '2020-09-25 11:05:22';foreach($locale as $code){    $l = new Locale($code);        $d = new IntlDateFormatter($code, IntlDateFormatter::FULL, IntlDateFormatter::FULL);    $c = IntlCalendar::createInstance(NULL, $code);    $c->set('2020', '09', '25', '11', '22', '33');    echo $code, ":";    echo $d->format($c), "<br/>";}// en:Friday, September 25, 2020 at 2:48:12 PM China Standard Time// fr-FR:vendredi 25 septembre 2020 à 14:48:12 heure normale de la Chine// en-gb:Friday, 25 September 2020 at 14:48:12 China Standard Time// zh-cn:2020年9月25日星期五 中国标准时间 下午2:48:12// en-us:Friday, September 25, 2020 at 2:48:12 PM China Standard Time// ko-kr:2020년 9월 25일 금요일 오후 2시 48분 12초 중국 표준시// ja-jp:2020年9月25日金曜日 14時48分12秒 中国標準時

是不是很方便,直接就以当地的语言来表示指定地区的标准日期格式了。

看完了这篇文章,相信你对“怎么使用PHP中的国际化功能来查看货币及日期信息”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网PHP编程频道,感谢各位的阅读!

--结束END--

本文标题: 怎么使用PHP中的国际化功能来查看货币及日期信息

本文链接: https://lsjlt.com/news/296819.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么使用PHP中的国际化功能来查看货币及日期信息
    小编给大家分享一下怎么使用PHP中的国际化功能来查看货币及日期信息,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!获取当前浏览器用户的所在地首先,我们来获取当前访问用户的所在地信息,也就是我们常见的 zh-cn 、 en-u...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作