数据库中的&符号

时间:2012-10-17 18:35:46

标签: php xml html-entities ampersand addslashes

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

如果我需要更改数据库中的链接,可以这样做。

4 个答案:

答案 0 :(得分:1)

您可以在$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看起来已经首先注意到它,并给予应有的信任。

答案 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 ...