Php DOMDocument parse和validateOnParse成功,单独解析和验证失败

Php DOMDocument parse和validateOnParse成功,单独解析和验证失败,php,html,validation,dom,Php,Html,Validation,Dom,以下是我尝试验证的html文件: 有效的HTML4 这么整洁 惊异 很多HTML4 哇 我已经根据w3c验证器()手动检查了它的有效性 此“验证方法”成功($string保存上述文件的内容): 此“验证方法”失败: 进一步的背景:PHP7.4,LibXML 2.9+。视窗10。由于W3服务器内置的延迟,我尝试用两种方法验证文件:第一种方法是让请求发送到W3服务器(大约需要一分钟)。LibXML错误消息报告“加载外部实体失败”。第二种方法是通过设置xml目录来缓存strict.dtd的本地副本

以下是我尝试验证的html文件:


有效的HTML4
这么整洁

惊异

很多HTML4

我已经根据w3c验证器()手动检查了它的有效性

此“验证方法”成功($string保存上述文件的内容):

此“验证方法”失败:

进一步的背景:PHP7.4,LibXML 2.9+。视窗10。由于W3服务器内置的延迟,我尝试用两种方法验证文件:第一种方法是让请求发送到W3服务器(大约需要一分钟)。LibXML错误消息报告“加载外部实体失败”。第二种方法是通过设置xml目录来缓存strict.dtd的本地副本。在本例中,我在strict.dtd的第81行得到一个奇怪的解析器错误,它抱怨实体内容类型没有正确终止


对我来说,能够独立于解析进行验证是很重要的。任何帮助都会很好。

大家好,Doug-,LibXML 2.9是解决您的问题的一种很好且有趣的方法!正如您所提到的,我还认为能够独立于解析进行验证是很重要的。你在这期间发现了更多吗很高兴收到你的来信
    $dom = new \DOMDocument();
    $dom->validateOnParse = true;
    // this succeeds
    $dom->loadHTML($string));
   $dom = new \DOMDocument();
   $dom->loadHTML($string);
   // this fails
   $dom->validate();