以下是一些从MySQL DB调用创建XML节点的PHP代码。除了男性序数指示符º
打破代码之外,它的效果很好。任何建议或提示将不胜感激。提前谢谢!
代码
$result = mysql_query("SELECT street FROM Addresses");
while ($row = @mysql_fetch_assoc($result)){
$node = $dom->create_element("marker");
$newnode = $parnode->append_child($node);
$newnode->set_attribute("street", $row['street']);
}
当$row['street']
的条目看起来像Nº111-E AVENIDA FOO
时,代码会中断。
预期结果
<markers><marker street="Nº111-E AVENIDA FOO" /></markers>
实际(破碎)结果
<markers><marker street="N
它打破º
。我尝试过使用utf8_encode($row['street'])
和htmlentities($row['street'])
,但都没有帮助。
手动输入字符
奇怪的是,如果手动添加地址,如下所示,代码效果很好,事实上,º
会自动转换为HTML编码º
。
$result = mysql_query("SELECT street FROM Addresses");
while ($row = @mysql_fetch_assoc($result)){
$node = $dom->create_element("marker");
$newnode = $parnode->append_child($node);
$newnode->set_attribute("street", "Nº111-E AVENIDA FOO");
}
手动输入º
时的结果:
<markers><marker street="Nº111-E AVENIDA FOO" /></markers>
答案 0 :(得分:0)
Bah,在发布之后,我发现问题出在其他地方。 htmlentities($row['street'])
工作正常。
最终代码
$result = mysql_query("SELECT street FROM Addresses");
while ($row = @mysql_fetch_assoc($result)){
$node = $dom->create_element("marker");
$newnode = $parnode->append_child($node);
$newnode->set_attribute("street", htmlentities($row['street']));
}
如果mods认为这是一个无用的帖子,请继续删除它。否则,我会留下它以防万一其他人发现它有用。
答案 1 :(得分:0)
这似乎是您正在使用的库中的错误。使用PHPs DOM扩展测试它可以正常工作:
$dom = new DOMDocument();
$markers = $dom->appendChild($dom->createElement('markers'));
$markers
->appendChild($dom->createElement('marker'))
->setAttribute('street', 'Nº111-E AVENIDA FOO');
echo $dom->saveXml();
<?xml version="1.0"?>
<markers><marker street="Nº111-E AVENIDA FOO"/></markers>