0

我正在尝试建立一个列出 poi 位置的网站。

我一直在使用谷歌 PHP MySQL 商店定位器教程,但仍有一些问题。

第一个问题是将MYSQL数据库中的字符串转换成与XML兼容的格式

例如

我有一个记录,其中 POI 的名称是“Sérvier”,并带有 é 的重音

我用它来提取名称:

$newnode->setAttribute("name", htmlentities($row['Name'], ENT_SUBSTITUTE, "ISO-8859-15"));

但它输出:

S& amp;eacute;vrier

(我不得不在 & 和 amp 之间添加空格以显示我的意思,但我期待

"S& eacute;vrier"

我究竟做错了什么?

4

1 回答 1

0

我相信这就像@MichaelRushton 建议的使用 DOMDocument

如果我只是将结果输出为 html 表格格式,我会得到预期的结果

// Iterate through the rows, adding XML nodes for each
echo "<table>";
while ($row = @mysql_fetch_assoc($result)){
echo "<tr>";
$node = $dom->createElement("marker");
$newnode = $parnode->appendChild($node);
$newnode->setAttribute("id", $row['ID']);
echo "<td>". $row['ID']."</td>";
$newnode->setAttribute("name", htmlentities($row['Name'], ENT_QUOTES, "ISO-8859-15"));
echo "<td>".$row['Name']."</td>";
$newnode->setAttribute("type", $row['Type']);
echo "<td>".$row['Type']."</td>";
$newnode->setAttribute("lat", $row['Latitude']);
echo "<td>".$row['Latitude']."</td>";
$newnode->setAttribute("lng", $row['Longitude']);
echo "<td>".$row['Longitude']."</td>";
$newnode->setAttribute("distance", $row['distance']);
echo "<td>".$row['distance']."</td>";
echo "</tr>";
}
echo "</table>";
echo $dom->saveXML();

再次阅读教程确实建议

注意:如果您的数据库包含国际字符或者您需要强制 UTF-8 输出,您可以在输出的数据上使用 utf8_encode

但我不知道如何为 XML 强制 UTF-8 输出

于 2013-06-11T13:09:31.830 回答