数据库中的Ampersands



我正在尝试编写一个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()&amp;转换为&

在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 ...

最新更新