我有幾個XML模板,我試圖用PHP的sprintf(v.5.3.8-Win54)來填充;但是,我注意到sprintf似乎在處理字符時遇到了問題。 看起來 < 字符需要後面跟一個空格,以便sprintf正確輸出它。我看着PHP sprintf documentation,但除%之外,我找不到任何特殊字符。我贊同用echo sprintf($format1, $name, $age);
,藉以說明問題的例子如下:使用sprintf輸出XML標籤
$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>
*格式4確實出來爲空白。
任何想法,爲什麼<性格是不是被輸出,除非有下列它的空間?我想我可以使用find/replace爲XML模板中的所有字符添加空格,但我寧願找出爲什麼會發生這種情況。我有一種感覺,這將是我還沒有遇到的基本知識;如果是這樣,你能否提供任何文件的參考?
有趣:我有<後的字符添加一個空格,而打字了在#1接口這個問題,以便它在FORMAT 5行顯示正確! Huuuuuuh ??!
*完整的代碼*
<?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);
?>
我無法複製您的結果; CLI和瀏覽器(查看源代碼以查看實際結果)都會顯示預期的輸出。你是否展示了你在測試中使用的所有代碼? – newfurniturey
@Prix - 添加
標籤只會更改字體。 – karol@newfurniturey - 在你的測試中,格式2與格式5相同嗎?在我的代碼之間唯一的區別是跟隨不到字符的空格。我沒有顯示的唯一代碼是每種格式的回顯。這些都是正確的,只是將格式變量更改爲$ format1,$ format2等... – karol