Не удается прочитать мета-перенаправления URL в DOMDocument - PullRequest
1 голос
/ 07 мая 2011

Я пытаюсь прочитать мета редирект сайта. Данные находятся в запросе curl (я создал заглушку для тестирования).

Что не работает, так это «читайте 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 ]

2 голосов
/ 07 мая 2011

Нет атрибута url=.Вам необходимо запросить атрибут content=.

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

И вам также придется вручную разбить эту строку результатов.Он все еще содержит префикс 2; url=.Это не то, с чем обычно работают функции DOM.

1 голос
/ 07 мая 2011

У вас нет правильно сформированного XML-документа, но если предположить, что он был правильно сформирован, то

Используйте

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