Получение ссылок на изображения между тегами привязки через парсер php dom - PullRequest
1 голос
/ 12 сентября 2011

Я пытаюсь прочитать все ссылки в данном URL.

вот код, который я использую:

$dom = new DomDocument();
@$dom->loadHTMLFile($url);
$urls = $dom->getElementsByTagName('a');

foreach ($urls as $url) {
        echo $url->innertext ." => ".$url->getAttribute('href');

Скрипт, выдающий все ссылки данного URL.

Но проблема здесь в том, что я не могу получить ссылки на изображения (изображение внутри тега привязки)

Сначала я попробовал с

$ url-> nodeValue

Но он давал якорный текст, содержащий только текстовые значения.

Я хочу прочитать как изображения, так и текстовые ссылки.Я хочу вывод в следующем формате.

Вход:

<a href="link1.php">first link</a>
<a href="link2.php"> <img src="imageone.jpg"></a>

Токовый выход:

first link => link1.php
=>link2.php with warning (Undefined property: DOMElement::$innertext )

Требуемый выход:

first link => link1.php
<img src="imageone.jpg">=>link2.php 

1 Ответ

1 голос
/ 12 сентября 2011

innerText не существует в PHP; это нестандартное расширение Javascript для DOM.

Я думаю, , что вы хотите - это свойство innerHTML. Нет родного способа достичь этого. Вы можете использовать saveXML или, из PHP 5.3.6, методы saveHTML для экспорта HTML каждого из дочерних узлов:

function innerHTML($node) {
    $ret = '';
    foreach ($node->childNodes as $node) {
        $ret .= $node->ownerDocument->saveHTML($node);
    }
    return $ret;
}

Обратите внимание, что вам нужно будет использовать saveXML до PHP 5.3.6

Тогда вы могли бы назвать это так:

echo innerHTML($url) ." => ".$url->getAttribute('href');
...