【发布时间】:2014-02-22 02:16:55
【问题描述】:
我无法弄清楚以下问题。我想基于 SYSTEM 解析 DTD 中的外部实体: 我在最新的 Ubuntu 12.10 上运行。没有自定义更改!
我有以下 PHP 测试代码:
<h1>simpleXml Demo</h1>
<form name="input" action="" method="POST">
<textarea name="xmlInput"></textarea><br />
<input type="submit" value="Submit">
</form>
<?php
if(isset($_POST['xmlInput']) and strlen($_POST['xmlInput'])>0){
$doc = simplexml_load_string($_POST['xmlInput']);
echo "<pre>";
print_r($doc);
echo "</pre>";
?>
示例 1: 运行此 XML 文件时,实体 &foo;已解决。
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE results [
<!ENTITY test "some text,">
]>
<results>
<result>This result is &test;</result>
</results>
示例 2: 运行此 XML 文件时,实体 &foo;只是被什么都取代了——完全没有错误!
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE result [
<!ENTITY test SYSTEM "http://textfiles.com/food/btaco.txt">
]>
<results>
<result>This result is &test;</result>
</results>
我已经玩过'libxml_disable_entity_loader()',它没有改变任何东西!
【问题讨论】:
标签: php xml external dtd entities