我有一个包含大量元标签的HTML页面,我想解析它们以找到某些标签。这是我正在使用的代码,但它没有提取任何标签。
$dom = new DOMDocument();
$dom->preserveWhiteSpace = false;
$dom->loadHtml($contents);
$metaChildren = $dom->getElementsByTagName('meta');
var_dump($metaChildren);下面是我使用的HTML代码片段(我用大括号替换了箭头):
[meta name="GZPlatform" content=" pc"]
[meta name="GZFeatured" content=" Gone Gold"]
[meta name="GZHeadline" content=" pc"]
[meta name="GZP_ID" content=" pc 21153"] 有什么想法吗?
发布于 2009-11-21 05:22:15
你确定标签没有匹配吗?var_dump的输出是什么?当你使用var_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";
}
?>给出输出:
GZPlatform= pc
GZFeatured= Gone Gold
GZHeadline= pc
GZP_ID= pc 21153发布于 2009-11-20 03:41:14
我的猜测是超文本标记语言无效,$dom->loadHtml调用失败。我相信调用返回true|false。所以可能是这样的:
if($dom->loadHtml($contents)){
$metaChildren = $dom->getElementsByTagName('meta');
}else{
//handle properly
}发布于 2009-11-21 05:26:27
COuld是不是解析器希望你关闭meta标签?
<meta name="name" />或
<meta name="name"></meta>https://stackoverflow.com/questions/1765968
复制相似问题