我正在尝试编写一个php函数,该函数会转到我的数据库并提取URL列表并将它们排列成xml结构并创建一个xml文件。
问题是,其中一些网址将包含一个HTML编码的&符号。所以,数据库是好的,但是目前,当我的函数试图获取这些URL时,脚本将停在&符号而不是完成。
数据库中的一个示例链接:
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();
如果我需要更改数据库中的链接,可以这样做。
答案 0 :(得分:1)
您可以在$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看起来已经首先注意到它,并给予应有的信任。
答案 1 :(得分:1)
看看这一行
array_push($row['form_link']);
你从未在$gameArray
数组中添加任何内容,它应该是
array_push($gameArray, $row['form_link']);
答案 2 :(得分:0)
您需要使用htmlspecialchars_decode。它将解码传递给它的字符串中的任何编码特殊字符。
答案 3 :(得分:0)
这很可能是您正在寻找的:
http://www.php.net/manual/en/function.mysql-real-escape-string.php
阅读文档,页面底部有一些示例......
'&安培;' oracleSQL和MySQL在查询中用作逻辑运算符,这就是为什么它会抛出错误。
您可能还想解码HTML ...