0

我正在尝试编写一个 php 函数,该函数进入我的数据库并提取 URL 列表并将它们排列成 xml 结构并创建一个 xml 文件。

问题是,其中一些 url 将包含一个 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

4 回答 4

1

您可以使用html_entity_decode()PHP$link转换&amp;&.

在您的 XML 中,您还可以包装链接<![CDATA[]]>以允许它包含字符。

$xml .= "<item><link><![CDATA[" . html_entity_decode($link) . "]]></link></item>"; 

更新
刚刚注意到你实际上没有把任何东西放进去$gameArray

array_push($row['form_link']);

尝试:

$gameArray[] = $row['form_link'];

* @Musa 似乎首先注意到了它,以获得应有的信誉。

于 2012-10-17T18:40:14.250 回答
1

看这条线

array_push($row['form_link']);

你从来没有在$gameArray数组中放任何东西,它应该是

array_push($gameArray, $row['form_link']);
于 2012-10-17T18:42:03.797 回答
0

您需要使用htmlspecialchars_decode。它将解码传递给它的字符串中的任何编码特殊字符。

于 2012-10-17T18:39:11.193 回答
0

这很可能是您正在寻找的内容:

http://www.php.net/manual/en/function.mysql-real-escape-string.php

阅读文档,页面底部有示例...

oracleSQL 和 MySQL 中的“&”在查询中用作逻辑运算符,这就是它抛出错误的原因。

您可能还想解码 HTML...

于 2012-10-17T18:41:17.823 回答