我认为这比以前更容易,或者我在想这个。
我正在尝试从网址返回html网页声明的doctype。 如果它不是!DOCTYPE html追加它!DOCTYPE html。
我尝试了几种不同的东西......最新的是下面的数组返回,但无论测试的页面如何,即使完全声明的DOCTYPE不相同,返回的数组也完全相同。
对于我做错了什么或如何解决这个问题的任何想法都将非常感激。
<!DOCTYPE html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
$url="http://www.example.com";
$html = file_get_contents($url);
$doc = new DOMDocument();
$doc->loadHTML(htmlentities($html));
$doctype = $doc->doctype;
var_dump($doctype);
var_dump返回
object(DOMDocumentType)#2 (22) {
["name"]=> string(4) "html"
["entities"]=> string(22) "(object value omitted)"
["notations"]=> string(22) "(object value omitted)"
["publicId"]=> string(37) "-//W3C//DTD HTML 4.0 Transitional//EN"
["systemId"]=> string(41) "http://www.w3.org/TR/REC-html40/loose.dtd"
["internalSubset"]=> NULL
["nodeName"]=> string(4) "html"
["nodeValue"]=> NULL
["nodeType"]=> int(10)
["parentNode"]=> string(22) "(object value omitted)"
["childNodes"]=> NULL
["firstChild"]=> NULL
["lastChild"]=> NULL
["previousSibling"]=> NULL
["nextSibling"]=> string(22) "(object value omitted)"
["attributes"]=> NULL
["ownerDocument"]=> string(22) "(object value omitted)"
["namespaceURI"]=> NULL
["prefix"]=> string(0) ""
["localName"]=> NULL
["baseURI"]=> NULL
["textContent"]=> string(0) "" }
答案 0 :(得分:2)
您无需拨打 htmlentities :
$html = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html></html>';
$doc = new DOMDocument();
$doc->loadHTML( $html );
$doctype = $doc->doctype;
var_dump( $doctype );