Php MessageFormat字符串中的参数可以是可选的吗?
我正在使用该类格式化翻译后的字符串以显示给最终用户 问题是我还需要在最终结果中插入一些html标记。例如,字符串可能只是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} = &
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} =