DOMDocument :: loadHTML错误
我构build了一个脚本,将页面上的所有CSS组合在一起,以便在我的cms中使用它。 现在它工作很好,现在ii得到这个错误:
警告 :DOMDocument :: loadHTML()[domdocument.loadhtml]:实体中的标题标题无效,第26行的css.php中的第10行
警告 :DOMDocument :: loadHTML()[domdocument.loadhtml]:在实体中标记导航无效,第26行的css.php中的第10行
警告 :DOMDocument :: loadHTML()[domdocument.loadhtml]:实体中的标记部分无效,行26 : css.php中的 22行
这是PHP脚本
这是我的代码:
<?php header('Content-type: text/css'); include ('../global.php'); if ($usetpl == '1') { $client = New client(); $tplname = $client->template(); $location = "../templates/$tplname/header.php"; $page = file_get_contents($location); } else { $page = file_get_contents('../index.php'); } class StyleSheets extends DOMDocument implements IteratorAggregate { public function __construct ($source) { parent::__construct(); $this->loadHTML($source); } public function getIterator () { static $array; if (NULL === $array) { $xp = new DOMXPath($this); $expression = '//head/link[@rel="stylesheet"]/@href'; $array = array(); foreach ($xp->query($expression) as $node) $array[] = $node->nodeValue; } return new ArrayIterator($array); } } foreach (new StyleSheets($page) as $index => $file) { $css = file_get_contents($file); echo $css; }
标题,导航和部分是来自HTML5的元素。 由于HTML5开发人员觉得难以记住公共和系统标识符,DocType声明只是:
<!DOCTYPE html>
换句话说,没有DTD需要检查,这将使DOM使用HTML4 Transitional DTD,并且不包含这些元素,因此警告。
要压制警告,放
libxml_use_internal_errors(true);
之前调用loadHTML
和
libxml_use_internal_errors(false);
之后。
另一种方法是使用https://github.com/html5lib/html5lib-php 。