无法读取DOMDocument中的Meta-Redirect URL

时间:2011-05-06 20:17:52

标签: php xpath curl domdocument meta-tags

我正在尝试阅读网站的元重定向。数据是卷曲请求(我已经构建了一个存根来测试)。

什么不起作用是“读取URL”的事情 - 那里的任何PHP DOMDocument专家都能告诉我为什么这段代码不起作用?我正在尝试从元刷新标记中获取URL。

    $r['body'] = '<HTML><HEAD><TITLE>Meta Refresh Example</TITLE>'.
                 '<meta http-equiv=refresh content="12; URL=meta2.htm">'.
                 '<link rel="stylesheet" href="../bwsrstyle.css" type="text/css">'.
                 '<LINK REL="SHORTCUT ICON" href="/myicon.ico">'.
                 '<meta http-equiv="Content-Type" content="text/html; charset=></HEAD>'.
                 '<BODY BGCOLOR="#FFFFFF" TEXT="#000000">foo</BODY></HTML>';

$dom = new DOMDocument();
@$dom->loadHTML($r['body']);
$xpath = new DOMXpath($dom);
$meta_redirect = $xpath->query("//meta[@http-equiv='refresh']");

foreach ($meta_redirect as $node) { 
    echo         "\nNODE: {$node->getAttribute('http-equiv')} ".
                 "\nURL: {$node->getAttribute('url')}\n";   
}

'刷新'正确拉动但URL不是。

2 个答案:

答案 0 :(得分:2)

没有属性url=。您需要查询content=属性。

 print  "\nURL: {$node->getAttribute('content')}\n"; 

您还必须手动拆分此结果字符串。它仍然包含2; url=前缀。这不是DOM函数正常处理的事情。

答案 1 :(得分:1)

您根本没有格式良好的XML文档,但假设它已经很好地形成了

使用

substring-after(/*/*/meta[http-equiv="refresh"]/@content, " URL=")