PHP将错误的代码提交给XML

时间:2012-05-20 19:01:14

标签: php xml

我有一个xml文件(scores.xml),它使用php代码为其添加新标签。

我有一个名为Header的标签,其中包含一些HTML代码

<![CDATA[<tr><td colspan='7' id='headertd'>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<img border='0' src='images/euro.png' />
&nbsp;&nbsp;&nbsp;&nbsp;
UEFA Euro 2012 Qualifications</td></tr>]]>

当我以pgp脚本的形式编写这段代码并提交一切正常的XML文件,除了标题标签....我在php脚本中得到一个错误,代码就像xml标签一样的是:

&lt;![CDATA[&lt;tr&gt;&lt;td colspan='7' id='headertd'&gt;&#13;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#13;
&lt;img border='0' src='images/euro.png' /&gt;&#13;
&nbsp;&nbsp;&nbsp;&nbsp;&#13;
UEFA Euro 2012 Qualifications&lt;/td&gt;&lt;/tr&gt;]]&gt;

因此我的xml错误信息... 无论如何我能解决这个问题吗?并避免这些代码的转换?

那是我的PHP代码:

<?php
if (isset($_POST['submitted'])) {//If the user submitted the form, then add to the XML file
    //Load the scores XML file
    $scores = new DOMDocument();
    $scores -> load('../scores.xml');

    //Get the <Games> tag
    $games = $scores -> getElementsByTagName('Games');

    //Create the new <Game> tag 

    $newGame = $scores -> createElement("Game");
    $newGame -> appendChild($scores -> createElement("Header", $_POST['header']));

    //Add the new <Game> tag under the <Games> tag
    $games -> item(0) -> appendChild($newGame);

    //Save again
    $scores -> save('../scores.xml');

    echo "New game added.";
}
?>

<form id="form1" method="post" action="">
Header: <textarea style=" color:#000;" name="header" cols="73" rows="6" > </textarea>
<br><input type="submit" name="submitted" name="Add new row">
</form>

我没有用户界面我只是使用这个脚本让我更容易在我的网站上发布内容!

非常感谢您的帮助!

提前致谢!

2 个答案:

答案 0 :(得分:2)

[编辑2] 嗯,抱歉给出了错误的答案,我正在思考它,但PHP脚本将其转换为&#34;编码的#34;这是非常正常的。 form,因为当你添加html标签时,xml结构将被破坏,因此必须对其进行编码。因此,稍后当您尝试检索数据时,必须使用html_entity_decode()对其进行解码,以将其正确导出到浏览器。

[EDIT1] 正如我所看到的,内容是&#34;编码&#34;,所以在保存数据之前用html_entity_decode()解码它。 在这里&#34;最终&#34;代码:

<?php
if (isset($_POST['submitted'])) {//If the user submitted the form, then add to the XML file
    //Load the scores XML file
    $scores = new DOMDocument();
    $scores -> load('../scores.xml');

    //Get the <Games> tag
    $games = $scores -> getElementsByTagName('Games');

    //Create the new <Game> tag 

    $newGame = $scores -> createElement("Game");
    $newGame -> appendChild($scores -> createElement("Header", html_entity_decode($_POST['header'])));

    //Add the new <Game> tag under the <Games> tag
    $games -> item(0) -> appendChild($newGame);

    //Save again
    $scores -> save('../scores.xml');

    echo "New game added.";
}
?>

<form id="form1" method="post" action="">
Header: <textarea style=" color:#000;" name="header" cols="73" rows="6" > </textarea>
<br><input type="submit" name="submitted" name="Add new row">
</form>

答案 1 :(得分:1)

在将$_POST['header']内容添加到<Game>之前,请尝试使用html_entity_decode