我的客户端有2台服务器,分别是临时服务器和实时服务器。他们有不同的PHP版本(我知道-他们以这种方式提供)。我有以下代码:
setlocale(LC_MONETARY, 'en_GB');
$product = wc_get_product( $product_id );
if ($product->get_price()){
return (string) money_format('%i', $product->get_price());
}
在登台服务器上,它返回格式如下的价格:“ GBP 10.00” 但是在直播时,它返回的价格没有GBP前缀,仅为“ 10.00”
在两台服务器上运行时: 语言环境-a | grep en_GB 我得到:
en_GB
en_GB.iso88591
en_GB.iso885915
en_GB.utf8
登台服务器在Linux版本2.6.32-696.18.7.el6.x86_64(mockbuild@c1bl.rdu2.centos.org)上运行PHP 5.6.21(gcc版本4.4.7 20120313(Red Hat 4.4.7- 18)(GCC))#1 SMP 2018年1月4日星期四17:31:22 UTC
Live在Linux版本4.9.96mtv23(ci_slave@cislave73-git.mtsvc.net)(gcc版本4.7.2(Debian 4.7.2-5))上运行PHP 5.3.28#1 SMP 5月15日星期二: 2018年美国夏令时22:40
其他发现... 我现在发现,当从循环中多次调用此代码时(即当我退回很多产品时),就会发生此问题。如果只是在执行php脚本(返回单个产品)期间调用了它一次,那么它就起作用了!
答案 0 :(得分:0)
您应该使用utf-8字符集设置语言环境:
setlocale(LC_MONETARY, 'en_GB.utf8');