Как получить элемент изображения в XML-документе с помощью PHP?

Я пытаюсь получить ссылки на миниатюры, такие как:

https://i.pinimg.com/236x/38/8f/c9/388fc91621d9d12db3d1211b39ab0fc1--flying-dog-pure-joy.jpg

Но по какой-то причине getElementsByTagName не возвращает то, что я хотел.

$newdom=new DOMDocument();
$xml=simplexml_load_file("https://www.pinterest.co.uk/sucastro/animals.rss");
$newdom->loadXML($xml);
$out=$newdom->getElementsByTagName('img');
print_r($out);

Я тоже пробовал

$out=$newdom->channel->item->description->getElementsByTagName('img');

что тоже не удалось.

SimpleXMLElement Object
(
[@attributes] => Array
(
[version] => 2.0
)

[channel] => SimpleXMLElement Object
(
[title] => ANIMALS
[link] => https://www.pinterest.com/sucastro/animals/
[description] => SimpleXMLElement Object
(
)

[language] => en-us
[lastBuildDate] => Fri, 48 Jan 2017 33:33:33 +0000
[item] => Array
(
[0] => SimpleXMLElement Object
(
[title] => Hi ladies. Let's pin
[link] => https://www.pinterest.com/pin/209628557639623067/
[description] => <a href="/pin/209628557639623067/"><img src="https://i.pinimg.com/236x/38/8f/c9/388fc91621d9d12db3d1211b39ab0fc1--flying-dog-pure-joy.jpg"></a>Hi ladies. Let&#39;s pin GREEN AND WHITE today ❤️
[pubDate] => Fri, 08 Sep 2017 20:04:02 +0000
[guid] => https://www.pinterest.com/pin/209628557639623067/
)

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

2

Решение

Придерживаясь использования XML и XPath, это возможно, но вы должны декодировать каждый блок, когда читаете его — так что это не так эффективно, как могло бы быть.
Код читает канал RSS, а затем извлекает все элементы описания.

Затем он декодирует кодированный HTML и извлекает атрибут src из каждого сегмента.

<?php
error_reporting ( E_ALL );
ini_set ( 'display_errors', 1 );

libxml_use_internal_errors();
$doc = simplexml_load_file("https://www.pinterest.co.uk/sucastro/animals.rss");
$items = $doc->xpath("//item/description");
foreach ( $items as $item ) {
$doc = new DOMDocument();
$doc->loadHTML(html_entity_decode($item));
$img = $doc->getElementsByTagName('img')->item(0);
echo $img->getAttribute('src').PHP_EOL;

}

Это выводит (усеченный для места) …

https://i.pinimg.com/236x/38/8f/c9/388fc91621d9d12db3d1211b39ab0fc1--flying-dog-pure-joy.jpg
https://i.pinimg.com/236x/d7/1f/dc/d71fdc7f19d8c4b896840e4d8c65642f.jpg
https://i.pinimg.com/236x/94/2a/fb/942afb5bab44f6f3b4b9ea4f35690c54--national-forest-cute-photos.jpg
https://i.pinimg.com/236x/cc/3c/26/cc3c2658f23571a8eb34a0e34d71e80a--majestic-animals-lion-cub.jpg
https://i.pinimg.com/236x/98/1f/c6/981fc6e5e1e332e0067c1b6748fce20a--swan-lake-birds-.jpg
https://i.pinimg.com/236x/86/90/8d/86908dd2ce9b8c73648cdcbc5d3325e1--white-bunnies-white-rabbits.jpg
https://i.pinimg.com/236x/e0/7b/ce/e07bcea2ec026b5900afd0dc0c35ef71--autumn-leaves-west-highland-terrier.jpg
https://i.pinimg.com/236x/8f/87/e9/8f87e95b0384a0f227c9078d053cc202--new-friends-my-friend.jpgls-lion-cub.jpg
https://i.pinimg.com/236x/98/1f/c6/981fc6e5e1e332e0067c1b6748fce20a--swan-lake-birds-.jpg
https://i.pinimg.com/236x/86/90/8d/86908dd2ce9b8c73648cdcbc5d3325e1--white-bunnies-white-rabbits.jpg
https://i.pinimg.com/236x/e0/7b/ce/e07bcea2ec026b5900afd0dc0c35ef71--autumn-leaves-west-highland-terrier.jpg
https://i.pinimg.com/236x/8f/87/e9/8f87e95b0384a0f227c9078d053cc202--new-friends-my-friend.jpg
0

Другие решения

Это просто выбирает изображения из описания каналов RSS.

Вы можете попробовать это:

<?php

$xml=simplexml_load_file("https://www.pinterest.co.uk/sucastro/animals.rss");
foreach ($xml->channel->item as $item) {
preg_match('/<img.+src=[\'"](?P<src>.+?)[\'"].*>/i', $item->description, $image);
echo($image['src']);
echo "<br/>";
}

?>

Выход :

https://i.pinimg.com/236x/38/8f/c9/388fc91621d9d12db3d1211b39ab0fc1--flying-dog-pure-joy.jpg
https://i.pinimg.com/236x/d7/1f/dc/d71fdc7f19d8c4b896840e4d8c65642f.jpg
https://i.pinimg.com/236x/94/2a/fb/942afb5bab44f6f3b4b9ea4f35690c54--national-forest-cute-photos.jpg
https://i.pinimg.com/236x/cc/3c/26/cc3c2658f23571a8eb34a0e34d71e80a--majestic-animals-lion-cub.jpg
https://i.pinimg.com/236x/98/1f/c6/981fc6e5e1e332e0067c1b6748fce20a--swan-lake-birds-.jpg
https://i.pinimg.com/236x/86/90/8d/86908dd2ce9b8c73648cdcbc5d3325e1--white-bunnies-white-rabbits.jpg
https://i.pinimg.com/236x/e0/7b/ce/e07bcea2ec026b5900afd0dc0c35ef71--autumn-leaves-west-highland-terrier.jpg
https://i.pinimg.com/236x/8f/87/e9/8f87e95b0384a0f227c9078d053cc202--new-friends-my-friend.jpg
https://i.pinimg.com/236x/5e/8f/3b/5e8f3bc079c7617d8cf3a91568f402cd--love-my-dog-puppy-love.jpg
https://i.pinimg.com/236x/9f/6a/79/9f6a7948c1cf3d1fbc067d52691bbc7d--water-fountains-bird-baths.jpg
https://i.pinimg.com/236x/07/09/d0/0709d0b16178da14facd8401a8472a3d--dachshund-humor-dapple-dachshund.jpg
https://i.pinimg.com/236x/2e/c7/af/2ec7af9628a30ec3901c3d14d2b6dc08--animal-portraits-animals-photos.jpg
https://i.pinimg.com/236x/06/2e/4b/062e4b396631ae6fc52a64c2f32d8022--cat-whiskers-exotic-cats.jpg
https://i.pinimg.com/236x/5e/5c/d6/5e5cd648d4efb29b82607445b795d357--teacups-tea-time.jpg
https://i.pinimg.com/236x/dc/30/ce/dc30ce6b41970dc93f1a3607cb48ab2a--pretty-birds-beautiful-birds.jpg
https://i.pinimg.com/236x/80/63/e1/8063e102ba108b0f6531065bdf50687c--bear-costume-the-zoo.jpg
https://i.pinimg.com/236x/c6/f3/1e/c6f31efadca1b2f71b898a85c46a6f87--baby-polar-bears-panda-bears.jpg
https://i.pinimg.com/236x/c2/13/c3/c213c317cc750ac5fef00c4ebd1a1b71--elephant-love-baby-elephants.jpg
https://i.pinimg.com/236x/49/75/d8/4975d85611c291c50db1ee57f6018bef.jpg
https://i.pinimg.com/236x/6b/cd/35/6bcd353ac7250d4159d3c74fe0d75747--beautiful-swan-beautiful-birds.jpg
https://i.pinimg.com/236x/1f/fa/4c/1ffa4c7d4f977a9c43c5655a4a3ea0ab--fox-baby-pet-fox.jpg
https://i.pinimg.com/236x/1c/9e/e1/1c9ee1aba651fde0473a4abcc8cab6c4--baby-cheetahs-travel-photography.jpg
https://i.pinimg.com/236x/fd/cd/40/fdcd40daae027c7f51298a543a015791--baby-caracal-baby-bobcat.jpg
https://i.pinimg.com/236x/cc/75/b7/cc75b77d9cea128fcab6daa1d57826af--leopard-animal-baby-leopard.jpg
https://i.pinimg.com/236x/3c/93/29/3c9329976aa40675483e026f4ac5baa6--animaux-totems-can-to.jpg
0

У вас есть вещи, которые немного перепутаны. Вы получаете корм в SimpleXMLElement, но затем попробуйте загрузить его в DOMDocument,

Что вам нужно сделать, это взять SimpleXMLElementперебрать itemи получить их описание. Обратите внимание, что вы не может используйте XPath или связанный с ним (кроме того, чтобы сделать его другим SimpleXMLElement), чтобы получить источник img, поскольку теперь вы имеете дело только со значением элемента.

Итак, что вы Можно сделать вот посмотреть, есть ли изображение, и если есть, извлечь источник:

<?php
$newdom=new DOMDocument();
$xml=simplexml_load_file("https://www.pinterest.co.uk/sucastro/animals.rss");
foreach ($xml->channel->item as $item) {
$desc = $item->description;
if (preg_match("/<img src=\"(.*?)\"/i", $desc, $m)) {
echo "Image: ".$m[1]."<br>";
}
}
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector