我正在尝试编写一个php函数,该php函数转到我的数据库并删除URL列表,并将它们安排到XML结构中并创建XML文件。
问题是,其中一些URL将包含编码HTML的and和。因此,数据库很好,但是当前,当我的功能试图抓住这些URL时,脚本将停止在ampersands上,而不会完成。
数据库的一个示例链接:
http://www.mysite.com/myfile.php?select=on&league_id=8&sport=15
function buildXML($con) {
//build xml file
$sql = "SELECT * FROM url_links";
$res = mysql_query($sql,$con);
$gameArray = array ();
while ($row = mysql_fetch_array($res))
{
array_push($row['form_link']);
}
$xml = '<?xml version="1.0" encoding="utf-8"?><channel>';
foreach ($gameArray as $link)
{
$xml .= "<item><link>".$link."</link></item>";
}
$xml .= '</channel>';
file_put_contents('../xml/full_rankings.xml',$xml);
}
mysql_close($con);
session_write_close();
如果我需要更改数据库中的链接,则可以完成。
您可以在$link
上使用PHP的html_entity_decode()
将&
转换为&
。
在XML中,您还可以将链接包装在<![CDATA[]]>
中以允许其包含字符。
$xml .= "<item><link><![CDATA[" . html_entity_decode($link) . "]]></link></item>";
更新
只是注意到您实际上没有将任何内容放入$gameArray
:
array_push($row['form_link']);
尝试:
$gameArray[] = $row['form_link'];
* @musa看起来首先注意到了,以应有的信用。
看这一行
array_push($row['form_link']);
您永远不会在$gameArray
数组中放任何东西,应该是
array_push($gameArray, $row['form_link']);
您需要使用htmlspecialchars_decode。它将解码字符串传递给它的任何编码的特殊字符。
这很可能是您要寻找的:
http://www.php.net/manual/en/function.mysql-real-escape-ning.php
阅读文档,页面底部有示例...
'&amp;'在oraclesql和mysql中,在查询中用作逻辑运算符,这就是为什么它正在抛弃错误。
您也可能要解码HTML ...