我有一些我正在尝试使用 PHP 的 sprintf (v.5.3.8-Win54) 填充的 XML 模板;但是,我注意到 sprintf 似乎与<字符有问题。看来<字符后面需要跟一个空格,以便 sprintf 正确输出它。 我查看了PHP sprintf 文档,但除了%之外,我找不到任何对任何特殊字符的引用。我使用以下示例来echo sprintf($format1, $name, $age);
说明问题:
$name = 'Lame';
$age = 1000;
$format1 = 'My name is %s. I am %d years old.';
$format2 = '<name> %s </name><age> %d </age>';
$format3 = 'name> %s /name>age> %d /age>';
$format4 = '<name %s </name<age %d </age';
$format5 = '<name> %s </name><age> %d </age>';
格式回显为:
FORMAT 1: My name is Lame. I am 1000 years old.
FORMAT 2: Lame 1000
FORMAT 3: name> Lame /name>age> 1000 /age>
FORMAT 4:
FORMAT 5: <name> Lame </name><age> 1000 </age>
*FORMAT 4 确实是空白的。
任何想法为什么<字符不被输出,除非它后面有一个空格?我想我可以使用查找/替换为 XML 模板中的所有<字符添加一个空格,但我宁愿找出为什么会发生这种情况。我有一种感觉,这将是我还没有接触到的基本知识;如果是这样,您能否提供任何文档的参考资料?
有趣:在 Stackoverflow 界面中输入此问题时,我必须在<字符后添加一个空格,以便它正确显示在 FORMAT 5 行中!呜呜呜??!
* 完整代码 *
<?php
$name = 'Lame';
$age = 1000;
$format1 = 'My name is %s. I am %d years old.';
$format2 = '<name> %s </name><age> %d </age>';
$format3 = 'name> %s /name>age> %d /age>';
$format4 = '<name %s </name<age %d </age';
$format5 = '< name> %s < /name>< age> %d < /age>';
echo 'FORMAT 1: ';
echo sprintf($format1, $name, $age);
echo '<br>';
echo 'FORMAT 2: ';
echo sprintf($format2, $name, $age);
echo '<br>';
echo 'FORMAT 3: ';
echo sprintf($format3, $name, $age);
echo '<br>';
echo 'FORMAT 4: ';
echo sprintf($format4, $name, $age);
echo '<br>';
echo '<br>';
echo 'FORMAT 5: ';
echo sprintf($format5, $name, $age);
?>