Как мне получить атрибут src тегов img?

Я загружаю DOM по внешнему URL-адресу как таковой:

$dom = new DOMDocument;
$dom->loadHTMLFile( "external_url.html" );

$arrayOfSources = array();

foreach( $dom->getElementsByTagName( "img" ) as $image )
    $arrayOfSources[] = $image->item(0)->getAttribute("src");

Таким образом, я хочу сохранить все атрибуты src тегов img в массиве, но все равно получаю сообщение об ошибке Fatal error: Call to undefined method DOMDocument::item()

Что мне здесь не хватает? Как мне извлечь все атрибуты src из тегов img в HTML?


person Weblurk    schedule 22.06.2011    source источник
comment
Это должно быть $arrayOfSources[] = $image->item[0]->getAttribute("src"); обратите внимание на квадратные скобки   -  person Kumar    schedule 22.06.2011
comment
@Kumary Я не верю, что это правильно. $image - это объект, а не массив.   -  person alex    schedule 22.06.2011
comment
@alex, даже в этом случае в объекте нет метода с именем item(), AFAIK, объект, который он использует, состоит из других объектов, и ему нужно покончить с image(0)   -  person Kumar    schedule 22.06.2011


Ответы (3)


Отбросьте часть ->item(0).


person Álvaro González    schedule 22.06.2011
comment
Это был самый быстрый (рабочий) ответ, который я когда-либо видел. Спасибо! - person Weblurk; 22.06.2011

Внутри этого цикла вам не нужно обращаться к элементу с помощью item(0).

Итератор для этой коллекции позволяет вам просто сделать foreach() на нем и получить неявный доступ к каждому элементу в _ 3_.

person alex    schedule 22.06.2011
comment
Правильный! Более того, в самом сообщении об ошибке говорится, что с объектом не связан метод с именем item(), что дает понять, что его нельзя использовать, я бы просто использовал доисторический метод var_dump/print_r для его отладки. - person Kumar; 22.06.2011
comment
Во-вторых, у меня есть вопрос, я бы использовал здесь simplexml, было бы это неправильно? - person Kumar; 22.06.2011
comment
@Kumar: Я предпочитаю использовать DOMDocument для самостоятельного анализа HTML. - person alex; 22.06.2011
comment
Есть ли преимущество? Я завершил небольшой личный проект, используя simplexml, и быстро нашел его, но я не эксперт, поэтому хотел бы понять, почему DOMDocument предпочтительнее? - person Kumar; 22.06.2011

Пытаться:

$arrayOfSources[] = $image->getAttribute("src");
person Michael Wright    schedule 22.06.2011