SimpleXML: enclosure?

bek

Новичок
SimpleXML: enclosure?

Подскажите, пожалуйста, кто знает как в обычном SimpleXML вытягивать картинку из <enclosure url="http://xxxx/47/1227701347.250x200.jpg" type="image/jpeg" length=""/>

И еще такой вопрос - понравилась новость на одном фиде, но там новость (самая свежая) отображается последней, т.е. список новостей выстраивается не сверху-вниз, а снизу-вверх. Как в таком случае через SimpleXML сделать так, чтобы вытягивать последняя новость (первую от конца). Просто у меня выставлено по умолчанию парсить одну новость, а в таком случае будет парсить всегда первую сначала (она же самая старая).
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Mr_Max
не согласен, парсинг RSS-фида в формате XML не является кражей.
В этом смысл существования и публикации фидов - чтобы их парсили и вставляли в свои сайты :)
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Обычно вставляют информеры в которых есть реклама источника (хотя-бы ссылкой).
Некоторые вещи мне показались странными по-этому и закрыл.
1. length или нет, или есть не пустой.
2. Урл фида скрыт. Нет объяснений - а только хочу парсить.
3. В стандартных фидах как-раз выше выводятся новые записи. Здесь-же недоделка какая-то непонятная. С точностью наоборот

Одним словом тебе виднее. =)
 

bek

Новичок
Да, я просто поставил иксики, чтобы было понятно, что не для конкретного фида, а вообще как пример. Это, кстати, фид РБК.УА. Вот там как раз самые последние новости публикуются внизу.
И это не кража контента, т.к. я заголовок ссылается на полную новость первоисточника.
 

Ravanger

Новичок
PHP:
foreach ($item->enclosure->attributes() as $name => $value) {
                if ($name == 'url') {
                    $image = (string)$value;
                }
            }
 

FB3

Новичок
Тогда уж так:
$image = (string)$item->enclosure->attributes()->url
Преобразование в строку кстати не обязательно, но очень желательно, чтобы жрало меньше памяти и работа кода была более очевидной. А так при выводе все равно автоматом в строку сконвертит. Хотя, опять же, в данном случае это атрибут, он и так строку вернет, если не ошибаюсь.
По второму вопросу, лучше всего изучить xPath, он довольно не сложный, иногда даже на SQL смахивает.
http://ru2.php.net/manual/en/function.simplexml-element-xpath.php
http://www.w3.org/TR/xpath
http://www.w3schools.com/Xpath/default.asp
Конкретно понадобятся вот эти функции:
http://www.w3schools.com/Xpath/xpath_functions.asp#context
 

bek

Новичок
Пробовал. Скрипт почему-то начинает ругаться. Можно чуточку доступнее, как для тупого. Вот сам скрипт, которым я парсаю новости.
<?
$url = 'rss.xml'; //адрес RSS ленты

$rss = simplexml_load_file($url); //Интерпретирует XML-файл в объект

//цикл для обхода всей RSS ленты
foreach ($rss->channel->item as $item) {
echo '<h1>'.$item->title.'</h1>'; //выводим на печать заголовок статьи
echo $item->description; //выводим на печать текст статьи
}
?>
Скажите, что дописать и куда вставить. А то многое пробовал, но не получалось(
 

bek

Новичок
Не, в смысле скрипт работает отлично, но нужно добавить
$image = (string)$item->enclosure->attributes()->url
и вот тут уже начинаются траблы.
 

FB3

Новичок
А кто ж знает, куда тебе это нужно добавить.
Если скрипт не сам делал, то сядь и разберись, что каждая строчка в нем делает.
 

bek

Новичок
В том-то и дело, что симпл я досконально разобрал. Единственное в чем загвоздка - не получается вставить вот это
$image = (string)$item->enclosure->attributes()->url
чтобы картинки вытягивать.
Суть в том, что мне нужно из enclosure брать картинки, вставляю строчку, что выше - скрипт гибнет. Может, я как-то неправильно вставляю, поэтому спрашиваю у тех, кто больше знает.

-~{}~ 27.11.08 17:39:

<?
$url = 'rss.xml'; //адрес RSS ленты

$rss = simplexml_load_file($url); //Интерпретирует XML-файл в объект

//цикл для обхода всей RSS ленты
foreach ($rss->channel->item as $item) {
$image = (string)$item->enclosure->attributes()->url;
echo '<h1>'.$item->title.'</h1>'; //выводим на печать заголовок статьи
echo $item->description; //выводим на печать текст статьи
}
?>
Вот так я делаю. Мож $image не так вставил?
 

FB3

Новичок
Выясняй, почему гибнет.
http://phpfaq.ru/debug

$image = (string)$item->enclosure->attributes()->url;
Эта строчка ничего не выводит в HTML код страницы.

PS. У меня ничего не гибнет.
 

bek

Новичок
$image = (string)$item->enclosure->attributes()->url;
А ведь должна по идее парсить содержимое enclosure, т.е. по сути картинку.
Я в принципе из-за этого и создал тему, что не пойму как мне вытащить содержимое enclosure.
 

FB3

Новичок
1. Определись, что хочешь получить
2. Перечитай еще раз топик сначала и до конца
3. Разберись почему скрипт падает

Хватит писать бестолковые сообщения, повторяющие то, что уже было выше.
 
Сверху