Php MessageFormat字符串中的参数可以是可选的吗?

Php MessageFormat字符串中的参数可以是可选的吗?,php,internationalization,icu,messageformat,Php,Internationalization,Icu,Messageformat,我正在使用该类格式化翻译后的字符串以显示给最终用户 问题是我还需要在最终结果中插入一些html标记。例如,字符串可能只是Peter喜欢照片,但是,我需要最终结果包含标记: <a href="blah.com">Peter</a> liked <a href="blah2.com">a photo</a> 其中: {0} = Peter {1} = <a href="blah.com"> {2} = </a> {3} = &

我正在使用该类格式化翻译后的字符串以显示给最终用户

问题是我还需要在最终结果中插入一些html标记。例如,字符串可能只是
Peter喜欢照片
,但是,我需要最终结果包含标记:

<a href="blah.com">Peter</a> liked <a href="blah2.com">a photo</a>
其中:

{0} = Peter
{1} = <a href="blah.com">
{2} = </a>
{3} = <a href="blah2.com">
{4} = </a>
然而,这是非常麻烦的,不是很好


我是否可以在消息格式字符串中将一个参数标记为可选的(基本上,如果没有传入参数的值,则忽略该参数)?

在PHP 5.5中,这现在是可能的,如中所述

MessageFormatter::format()和相关函数在 提供的参数数量不足。相反 占位符将不会被替换


另一种选择可能是使用ICU的选择选择器的格式返回纯文本格式的字符串或HTML/标记字符串。在任何情况下,如果你提供{n},你最好为n传递一些东西。
{0} = Peter
{1} = <a href="blah.com">
{2} = </a>
{3} = <a href="blah2.com">
{4} = </a>
{0} = Peter
{1} = 
{2} = 
{3} = 
{4} =