PHP DOMDocument GetElementsByTagName未找到元素

PHP DOMDocument GetElementsByTagName未找到元素,php,dom,metadata,Php,Dom,Metadata,我有一个包含大量元标记的HTML页面,我想对它们进行解析以找到某些元标记。这是我正在使用的代码,但它没有拾取任何标记 $dom = new DOMDocument(); $dom->preserveWhiteSpace = false; $dom->loadHtml($contents); $metaChildren = $dom->getElementsByTagName('meta'); var_dump($metaChildren); 下面是我正在使用的

我有一个包含大量元标记的HTML页面,我想对它们进行解析以找到某些元标记。这是我正在使用的代码,但它没有拾取任何标记

$dom = new DOMDocument();  
$dom->preserveWhiteSpace = false;  
$dom->loadHtml($contents);  
$metaChildren = $dom->getElementsByTagName('meta');  
var_dump($metaChildren);
下面是我正在使用的HTML的一个片段(我用大括号替换了箭头):


有什么想法吗?

我猜HTML是无效的,
$dom->loadHtml
调用失败了。我相信这个电话的结果是真的|假的。所以可能是这样的:

if($dom->loadHtml($contents)){
    $metaChildren = $dom->getElementsByTagName('meta');
}else{
    //handle properly
}

我猜HTML是无效的,
$dom->loadHtml
调用失败。我相信这个电话的结果是真的|假的。所以可能是这样的:

if($dom->loadHtml($contents)){
    $metaChildren = $dom->getElementsByTagName('meta');
}else{
    //handle properly
}

你确定标签不匹配吗?
var\u dump
的输出是什么?当您使用
var\u dump($metaChildren->length)
时,您得到了什么值?您的代码似乎在这里工作:

<?
$dom = new DOMDocument();
$dom->preserveWhiteSpace = false;
$dom->loadHtmlFile('test.html');
$metaChildren = $dom->getElementsByTagName('meta');
for ($i = 0; $i < $metaChildren->length; $i++) {
  $el = $metaChildren->item($i);
  print $el->getAttribute('name') . '=' . $el->getAttribute('content') . "\n";
}
?>

你确定标签不匹配吗?
var\u dump
的输出是什么?当您使用
var\u dump($metaChildren->length)
时,您得到了什么值?您的代码似乎在这里工作:

<?
$dom = new DOMDocument();
$dom->preserveWhiteSpace = false;
$dom->loadHtmlFile('test.html');
$metaChildren = $dom->getElementsByTagName('meta');
for ($i = 0; $i < $metaChildren->length; $i++) {
  $el = $metaChildren->item($i);
  print $el->getAttribute('name') . '=' . $el->getAttribute('content') . "\n";
}
?>

是否解析器希望您关闭元标记

<meta name="name" />


解析器是否希望您关闭元标记

<meta name="name" />



您可以发布一个您试图匹配的HTML示例吗。我想知道你是否有一个name属性。你能发布一个你试图匹配的HTML的示例吗。我想知道你是否有一个name属性。我没有意识到它必须在HTML上是有效的,看看文档,你是对的。我习惯于使用XML解析器。不管是哪种情况,在继续之前检查加载是否成功都是一个好主意。我没有意识到它必须是有效的。从理论上看,查看文档,你是对的。我习惯于使用XML解析器。不过,在这两种情况下,最好先检查加载是否成功,然后再继续。