全国统一服务热线

130-9923-6737

新闻中心

当前位置:首页>新闻中心

PHP中格式化和反格式化

格式化

//格式化

$fmt=new MessageFormatter("zh_CN","{0,number,integer}只猴子在{1,number,integer}颗树上,每只树上有{2,number}只猴子");

echo$fmt->format([4560,123,4560/123]),PHP_EOL;

//4,560只猴子在123颗树上,每只树上有37.073只猴子

$fmt=new MessageFormatter("de","{0,number,integer}Affen auf{1,number,integer}B?umen sind{2,number}Affen pro Baum");

echo$fmt->format([4560,123,4560/123]),PHP_EOL;

//4.560 Affen auf 123 B?umen sind 37,073 Affen pro Baum

echo MessageFormatter::formatMessage("zh_CN","{0,number,integer}只猴子在{1,number,integer}颗树上,每只树上有{2,number}只猴子",[4560,123,4560/123]),PHP_EOL;

//4,560只猴子在123颗树上,每只树上有37.073只猴子

echo MessageFormatter::formatMessage("de","{0,number,integer}Affen auf{1,number,integer}B?umen sind{2,number}Affen pro Baum",[4560,123,4560/123]),PHP_EOL;

//4.560 Affen auf 123 B?umen sind 37,073 Affen pro Baum

看到了吗?类似于PDO里预编译操作的占位符。在调用format()方法后,就可以让这个方法里面的参数来替换占位符的内容。我们可以指定占位的所使用的参数类型和位置,{参数下标,类型,扩展类型}这就是这个信息数据格式化的占位符的规则定义。

看起来貌似很简单呀,不过需要注意的是,它只支持数字、日期、文本片段类型。

MessageFormatter::formatMessage()这个静态方法可以一次性指定语言、预操作语句,以及替换参数,无需先实例化,然后调用format()方法。

反格式化(根据规则获取参数数组)

通过使用实例化后的parse()方法或直接使用静态方法MessageFormatter::parseMessage()能实现这种操作。

值得注意的是,对于zh_CN,也就是中文语言区,这个操作是有问题的。你可以通过getErrorMessage()和getErrorCode()查看错误信息和错误代码,可以看到,对于中文,直接返回的错误信息就是解析失败。


QQ咨询
在线咨询
在线报名
130-9923-6737
130-9923-6737
返回顶部