2014-01-14 3 views
0

Я пытаюсь получить первое изображение некоторого HTML. Я знаю, как добиться всех изображений, используя цикл for. Тем не менее, я изо всех сил стараюсь получить только первый.Получить первое изображение с новым DOMDocument()

У меня есть следующий код:

function get_first_image_b() { 

    global $post, $posts; 
    ob_start(); 
    ob_end_clean(); 
    $html= $post->post_content; 

    $doc = new DOMDocument(); 
    @$doc->loadHTML($html); 
    $img = $doc->getElementsByTagName('img'); 
    print_r($img); 

} 

Какие выплевывает:

(
    [length] => 4 
) 

ли кто-нибудь знает, как я мог повернуть первый из этого в строку/или что-нибудь полезное?

ответ

4

Попробуйте использовать метод item:

echo $img->item(0)->getAttribute('src'); 
+0

Избили меня тоже +1 –

+0

'Объект класса DOMElement не могут быть преобразованы в string', по-видимому .. –

+0

@tmyie, что из-за' echo'. Просто используйте 'var_dump ($ img-> item (0))', если вы хотите увидеть фактическую информацию об объекте. –

0

Объект DOMNodeList реализует проходимой, так что вы можете сделать это.

$img = $doc->getElementsByTagName('img'); 
$first_image = $img->current(); // get first element in list 
+0

'$ img = $ doc-> getElementsByTagName ('img'); $ first_image = $ img-> current(); // получить первый элемент в списке echo $ first_image; 'также создает ошибку. «Объект класса DOMElement не может быть преобразован в строку« –

+1

@tmyie Не «эхо». Это объект. Ваша ошибка возникает из-за того, что этот объект не должен реализовывать '__toString()'. –

Смежные вопросы