我在使用文件中的 DTD 时遇到了问题。它需要相对解析,并且包含导致 DomDocument 无法解析文件的字符。
编码和绝对文件名没有太大帮助。所以我使用了 data:// 流包装器 ( https://php.net/manual/en/wrappers.data.php ) 作为解决方法
<?php
// 相对或绝对文件名
$path = '...';
// 将文件内容转换为文件名
$data = file_get_contents($path);
$systemId = 'data://text/plain;base64,'.base64_encode($data);
// ...
// 创建一个 DOMDocumentType 实例
$dtd = $aImp->createDocumentType('qualified name', '', $systemId);
?>
运行良好。