Переупорядочение RSS-канала с помощью PHP

64
6

Мне нужно отфильтровать и переупорядочить канал RSS.

Используя PHP, как бы определить, есть ли ссылка в приложении url=""?

Большинство из них будут пустыми, но я бы хотел переместить весь элемент, у которого есть ссылка в этом теге вверх.

Вот пример кода, с которым я буду работать. Я предполагаю, что я буду использовать isset? Что-то вроде:

if (isset($enclosure)){
HOW WOULD I SELECT THE PARENT ITEM? AND EVERYTHING IN IT? AND THEN MOVE IT TO THE TOP?
}

<item>
<title><![CDATA[Article title 1]]></title>
<link><![CDATA[http://www.articlelinkone.com]]></link>
<pubDate><![CDATA[Tue, 26 Feb 2013 15:45:00 EDT]]></pubDate>
<description><![CDATA[Article discription 1<br />Some HTML will exist]]></description>
<enclosure url="" type="image/jpeg"></enclosure>
<thumbnail url="" type="image/jpeg"></thumbnail>
<summary><![CDATA[Summary for article]]></summary>
<guid><![CDATA[Guide for article]]></guid>
<source url="http://www.article.com/"/>
</item>
<item>
<title><![CDATA[Article title 1]]></title>
<link><![CDATA[http://www.articlelinkone.com]]></link>
<pubDate><![CDATA[Tue, 26 Feb 2013 15:45:00 EDT]]></pubDate>
<description><![CDATA[Article discription 1<br />Some HTML will exist]]></description>
<enclosure url="" type="image/jpeg"></enclosure>
<thumbnail url="" type="image/jpeg"></thumbnail>
<summary><![CDATA[Summary for article]]></summary>
<guid><![CDATA[Guide for article]]></guid>
<source url="http://www.article.com/"/>
</item>
<item>
<title><![CDATA[Article title 1]]></title>
<link><![CDATA[http://www.articlelinkone.com]]></link>
<pubDate><![CDATA[Tue, 26 Feb 2013 15:45:00 EDT]]></pubDate>
<description><![CDATA[Article discription 1<br />Some HTML will exist]]></description>
<enclosure url="http://articleone.com/image1.jpg" type="image/jpeg"></enclosure>
<thumbnail url="http://articleone.com/thumb/image1.jpg" type="image/jpeg"></thumbnail>
<summary><![CDATA[Summary for article]]></summary>
<guid><![CDATA[Guide for article]]></guid>
<source url="http://www.article.com/"/>
</item>
<item>
<title><![CDATA[Article title 1]]></title>
<link><![CDATA[http://www.articlelinkone.com]]></link>
<pubDate><![CDATA[Tue, 26 Feb 2013 15:45:00 EDT]]></pubDate>
<description><![CDATA[Article discription 1<br />Some HTML will exist]]></description>
<enclosure url="" type="image/jpeg"></enclosure>
<thumbnail url="" type="image/jpeg"></thumbnail>
<summary><![CDATA[Summary for article]]></summary>
<guid><![CDATA[Guide for article]]></guid>
<source url="http://www.article.com/"/>
</item>

спросил(а) 2021-01-19T21:47:50+03:00 6 месяцев, 1 неделя назад
1
Решение
90

Вот как вы можете проверить, не является ли URL-адрес приложения не пустым с SimpleXML:

<?php
$xml = new new SimpleXMLElement($xml_content)
foreach( $xml->item AS $item ) {
if( !empty( $item->enclosure['url'] ))
// Do whatever you want
}

В зависимости от того, что вы хотите сделать, вы можете поместить $item в новый массив, построить новый XML файл и т.д.

ответил(а) 2021-01-19T21:47:50+03:00 6 месяцев, 1 неделя назад
78

Вы изучали SimpleXML? Вы сможете легко отменить элементы внутри объекта xml с чем-то вроде:

$str = file_get_contents($url);
$xml = simplexml_load_string($str);
$items = array_reverse($xml->xpath('item'));

ответил(а) 2021-01-19T21:47:50+03:00 6 месяцев, 1 неделя назад
64

Я думаю, вы действительно должны посмотреть на php dom xml

Простой пример DOM XML:

<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");

$x = $xmlDoc->documentElement;
foreach ($x->childNodes AS $item)
{
print $item->nodeName . " = " . $item->nodeValue . "<br>";
}
?>

Вы можете прочитать полный учебник по W3Schools (рекомендуется)

ответил(а) 2021-01-19T21:47:50+03:00 6 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема