Simplepie включает фантомные вложения, которые не существуют

#php #simplepie

#php #simplepie

Вопрос:

Я объединяю два канала с вложениями, и элементы, у которых нет вложений, отображаются с пустыми вложениями.

Вот код, в котором нарушающий бит выделен жирным шрифтом:

 <item>
<title><?echo $item->get_title(); ?></title>
<guid><? echo $item->get_permalink(); ?></guid>
<link><? echo $item->get_permalink(); ?></link>
**<? if ($enclosure = $item->get_enclosure()) {echo "<enclosure url='"
.$enclosure->get_link() ."' length='" .$enclosure->get_length() ."' type='"
.$enclosure->get_type() ."' />";} ?>**
<description>
<? echo $item->get_title(); ?>
</description>
</item>
  

Элементы без вложений отображаются с пустым URL-адресом вложения, длиной и типом:

Все реальные вложения отображаются так, как должны, с URL, длиной и типом. Я прочитал несколько тем на странице поддержки Simplepie, но не нашел решения.

Спасибо!

Комментарии:

1. Что $item->get_enclosure() возвращает, если вложения нет?

Ответ №1:

Я не знаю о Simplepie, но, глядя на код, $item->get_enclosure() вероятно, возвращает объект, который вычисляется как true , но является пустым. Так что, возможно, вам следует изменить условие if на:

 <? $enclosure = $item->get_enclosure(); if ($enclosure->get_link()) {...