PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Без описания
Поиск в теме | Версия для печати
Виталий Хрипунов
Отправлено: 31 Марта, 2017 - 08:58:30
Новичок
Покинул форум
Сообщений всего: 6
Дата рег-ции: Март 2017
Помог: 0 раз(а)
Здравствуйте!
Перебрал горы инфо. Не могу изъять параметры из xml тега.
Имеется строка:
Вопрос. Как считать параметр url?
ytrewq123
Отправлено: 31 Марта, 2017 - 13:53:44
Посетитель
Покинул форум
Сообщений всего: 352
Дата рег-ции: Окт. 2014
Помог: 0 раз(а)
Я конечно совсем не спец по ХМЛ.
url это атрибут этого тега.
В симпле не скажу как атрибуты добывать. А в DOM метод attributes.
Поэтому. Если не найдёте, штудируйте DOM. Но это сложнее и менее наглядно. (На мой взгляд). Но если надо и есть желание вперёд.
Или кто умнее, что-то подскажет.
Примерно так.
$dom = new DOMDocument();
$dom->load('imja_failaxml.xml');
$dom->getElementsByTagName('enclosure')[0]->attributes; //Nu vozmjom u pervogo. Poluchim Objekt. I ego cherez for posmotretj
(Отредактировано автором: 31 Марта, 2017 - 14:00:43)
Виталий Хрипунов
Отправлено: 31 Марта, 2017 - 13:59:49
Новичок
Покинул форум
Сообщений всего: 6
Дата рег-ции: Март 2017
Помог: 0 раз(а)
Повторюсь еще раз.
Есть строка
без закрывающего тега . Как из нее считать параметры?
CODE (
htmlphp ):
скопировать код в буфер обмена
< item>
< guid> https://lenta.ru/news/2017/03/30/korea_russians/</ guid>
< title> Южная Корея отказала во въезде 23 российским «туристам»</ title>
< link> https://lenta.ru/news/2017/03/30/korea_russians/</ link>
< description>
<! [ CDATA[ Власти Южной Кореи отказали во въезде 23 россиянам из- за того, что реальная цель их поездки не соответствовала заявленной. По данным посольства России в республике, эти граждане предоставили ложную информацию о том, что якобы едут в страну в качестве туристов. Их намерены в скором время отправить на родину. ] ] >
</ description>
< pubDate> Thu, 30 Mar 2017 17:39:20 +0300</ pubDate>
< enclosure url= "https://icdn.lenta.ru/images/2017/03/30/17/20170330170733523/pic_de7c2e9fd8ffc267e824ff6d359b067f.jpg" length= "88327" type= "image/jpeg" />
< category> Путешествия</ category>
</ item>
(Отредактировано автором: 31 Марта, 2017 - 14:02:03)
Мелкий
Отправлено: 31 Марта, 2017 - 14:27:36
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009
Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Виталий Хрипунов пишет: Есть строка без закрывающего тега
Виталий Хрипунов пишет: <enclosure url="image.jpg" length="88327" type="image/jpeg"/>
Указанный тэг закрыт.
Для simplexml аттрибуты можно прочитать дёрнув метод attributes() необходимого элемента документа.
Виталий Хрипунов
Отправлено: 31 Марта, 2017 - 14:33:12
Новичок
Покинул форум
Сообщений всего: 6
Дата рег-ции: Март 2017
Помог: 0 раз(а)
Мелкий пишет: Виталий Хрипунов пишет: Есть строка без закрывающего тега
Виталий Хрипунов пишет: <enclosure url="image.jpg" length="88327" type="image/jpeg"/>
Указанный тэг закрыт.
Для simplexml аттрибуты можно прочитать дёрнув метод attributes() необходимого элемента документа.
Fatal error: Call to undefined method DOMNodeList::attributes()
И хоть что делай. С ночи сижу все перебираю и ничего.
(Добавление)
CODE (
htmlphp ):
скопировать код в буфер обмена
<? php
function RSS_Tags( $item )
{
$tnl = $item -> getElementsByTagName ( "title" ) ;
$tnl = $tnl -> item ( 0) ;
$title = $tnl -> firstChild -> textContent ;
$tnl = $item -> getElementsByTagName ( "link" ) ;
$tnl = $tnl -> item ( 0) ;
$link = $tnl -> firstChild -> textContent ;
$tnl = $item -> getElementsByTagName ( "pubDate" ) ;
$tnl = $tnl -> item ( 0) ;
$date = $tnl -> firstChild -> textContent ;
$tnl = $item -> getElementsByTagName ( "description" ) ;
$tnl = $tnl -> item ( 0) ;
$description = $tnl -> firstChild -> textContent ;
$tnl = $item -> getElementsByTagName ( "enclosure" ) -> attributes ( ) -> url ;
$tnl = $tnl -> item ( 0) ;
$enclosure = $tnl ;
$y [ "title" ] = $title ;
$y [ "link" ] = $link ;
$y [ "date" ] = $date ;
$y [ "description" ] = $description ;
$y [ "enclosure" ] = $enclosure ;
return $y ;
}
function RSS_Read( $url )
{
$doc = new DOMDocument( ) ;
$doc -> load ( $url ) ;
$items = $doc -> getElementsByTagName ( "item" ) ;
foreach ( $items as $item )
{
$y = RSS_Tags( $item ) ; // get description of article, type 1
}
return $RSS_Content ;
}
$feeds = RSS_Read( "http://lenta.ru/rss/" ) ;
foreach ( $feeds as $feed )
{
print_r ( $feed ) ; // вывод содержимого массива, каждой записи }
?>
17 строка работает только так:
Выводится пустота. Ошибок не выдает.(Отредактировано автором: 31 Марта, 2017 - 14:37:32)
Строитель
Отправлено: 31 Марта, 2017 - 15:33:28
Участник
Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014
Откуда: Украина
Помог: 73 раз(а)
Виталий Хрипунов пишет: Строитель
А сам то пробывал извлечь? Скорее всего нет. Вот и не надо посылать.
Вы абсолютно правы - подобные задачи я решаю регулярками
Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
<?PHP
$search = '<item>
<guid>https://lenta.ru/news/2017/03/30/korea_russians/</guid>
<title>Южная Корея отказала во въезде 23 российским «туристам»</title>
<link>https://lenta.ru/news/2017/03/30/korea_russians/</link>
<description>
<![CDATA[Власти Южной Кореи отказали во въезде 23 россиянам из-за того, что реальная цель их поездки не соответствовала заявленной. По данным посольства России в республике, эти граждане предоставили ложную информацию о том, что якобы едут в страну в качестве туристов. Их намерены в скором время отправить на родину.]]>
</description>
<pubDate>Thu, 30 Mar 2017 17:39:20 +0300</pubDate>
<enclosure url="https://icdn.lenta.ru/images/2017/03/30/17/20170330170733523/pic_de7c2e9fd8ffc267e824ff6d359b067f.jpg" length="88327" type="image/jpeg"/>
<category>Путешествия</category>
</item>' ;
preg_match ( '~enclosure url="([^\s]+)"~iu' , $search , $a ) ;
echo $a [ 1] ;
// https://icdn.lenta.ru/images/2017/03/30/17/20170330170733523/pic_de7c2e9fd8ffc267e824ff6d359b067f.jpg
Виталий Хрипунов
Отправлено: 01 Апреля, 2017 - 00:36:17
Новичок
Покинул форум
Сообщений всего: 6
Дата рег-ции: Март 2017
Помог: 0 раз(а)
Строитель пишет: Виталий Хрипунов пишет: Строитель
А сам то пробывал извлечь? Скорее всего нет. Вот и не надо посылать.
Вы абсолютно правы - подобные задачи я решаю регулярками
Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
<?PHP
$search = '<item>
<guid>https://lenta.ru/news/2017/03/30/korea_russians/</guid>
<title>Южная Корея отказала во въезде 23 российским «туристам»</title>
<link>https://lenta.ru/news/2017/03/30/korea_russians/</link>
<description>
<![CDATA[Власти Южной Кореи отказали во въезде 23 россиянам из-за того, что реальная цель их поездки не соответствовала заявленной. По данным посольства России в республике, эти граждане предоставили ложную информацию о том, что якобы едут в страну в качестве туристов. Их намерены в скором время отправить на родину.]]>
</description>
<pubDate>Thu, 30 Mar 2017 17:39:20 +0300</pubDate>
<enclosure url="https://icdn.lenta.ru/images/2017/03/30/17/20170330170733523/pic_de7c2e9fd8ffc267e824ff6d359b067f.jpg" length="88327" type="image/jpeg"/>
<category>Путешествия</category>
</item>' ;
preg_match ( '~enclosure url="([^\s]+)"~iu' , $search , $a ) ;
echo $a [ 1] ;
// https://icdn.lenta.ru/images/2017/03/30/17/20170330170733523/pic_de7c2e9fd8ffc267e824ff6d359b067f.jpg
Нифига не работает. Неужели нельзя рабочий вариант дать?
Спойлер (Отобразить ) CODE (
htmlphp ):
скопировать код в буфер обмена
<? php
// Simple RSS parser v.1.0 by CyberSEO.net
$filename = "rss.php" ;
} else {
$cnt = min ( 10, count ( $index [ "ITEM" ] ) ) ; $content = "" ;
for ( $i = 1 ; $i < $cnt ; $i ++ ) {
$content .= "<p><a href='>" . html_entity_decode ( $vals [ $index [ "LINK" ] [ $i + 1 ] ] [ "value" ] , ENT_QUOTES ) . "'><h3>" . $i . " " . html_entity_decode ( $vals [ $index [ "TITLE" ] [ $i + 1 ] ] [ "value" ] , ENT_QUOTES ) . "</h3></a></p>" ; preg_match ( "~enclosure url='([^\s]+)'~iu" , $feed , $a ) ; $content .= "<p><img src='" . '$a' . "'> " . html_entity_decode ( $vals [ $index [ "DESCRIPTION" ] [ $i ] ] [ "value" ] , ENT_QUOTES ) . "</p><HR>" ; echo $a ;
}
}
echo $content ;
?>
Выдает: ArrayArrayArrayArrayArrayArrayAr rayArrayArray
П.С. Честно говоря, я уже задолбался. Нет у меня времени изучать весь PHP.(Отредактировано автором: 01 Апреля, 2017 - 00:40:05)
teleoperator27
Отправлено: 01 Апреля, 2017 - 02:10:55
Посетитель
Покинул форум
Сообщений всего: 265
Дата рег-ции: Янв. 2017
Помог: 21 раз(а)
Виталий Хрипунов пишет: Неужели нельзя рабочий вариант дать?
А должны?
Виталий Хрипунов пишет: Нет у меня времени изучать весь PHP.
Заплатите денег и спите спокойно, а на форуме что-то требовать это моветон, тут помогают по желанию.
Что вам надо? Распарсить rss что ли? Это тремя строчками решается
PHP:
скопировать код в буфер обмена
$url = 'http://lenta.ru/rss/' ;
foreach ( $feed -> channel -> item as $item ) {
$content = '<b>Линк (guid):</b> ' . $item -> guid . '<br>' ;
$content .= '<b>Заголовок:</b> ' . $item -> title . '<br>' ;
$content .= '<b>Еще линк (link):</b> ' . $item -> link . '<br>' ;
$content .= '<b>Категория:</b> ' . $item -> category . '<br>' ;
$content .= '<b>Дата:</b> ' . $item -> pubDate . '<br>' ;
$content .= '<div style="width:500px"><b>Краткое содержание</b> ' . $item -> description . '</div><br>' ;
$content .= '<img src ="' . $item -> enclosure [ 'url' ] . '" width="150" />' ;
$content .= '<hr><br>' ;
echo $content ;
}
(Отредактировано автором: 01 Апреля, 2017 - 02:12:01)
Виталий Хрипунов
Отправлено: 01 Апреля, 2017 - 05:05:16
Новичок
Покинул форум
Сообщений всего: 6
Дата рег-ции: Март 2017
Помог: 0 раз(а)
teleoperator27 пишет: Виталий Хрипунов пишет: Неужели нельзя рабочий вариант дать?
А должны?
Виталий Хрипунов пишет: Нет у меня времени изучать весь PHP.
Заплатите денег и спите спокойно, а на форуме что-то требовать это моветон, тут помогают по желанию.
Что вам надо? Распарсить rss что ли? Это тремя строчками решается
PHP:
скопировать код в буфер обмена
$url = 'http://lenta.ru/rss/' ;
foreach ( $feed -> channel -> item as $item ) {
$content = '<b>Линк (guid):</b> ' . $item -> guid . '<br>' ;
$content .= '<b>Заголовок:</b> ' . $item -> title . '<br>' ;
$content .= '<b>Еще линк (link):</b> ' . $item -> link . '<br>' ;
$content .= '<b>Категория:</b> ' . $item -> category . '<br>' ;
$content .= '<b>Дата:</b> ' . $item -> pubDate . '<br>' ;
$content .= '<div style="width:500px"><b>Краткое содержание</b> ' . $item -> description . '</div><br>' ;
$content .= '<img src ="' . $item -> enclosure [ 'url' ] . '" width="150" />' ;
$content .= '<hr><br>' ;
echo $content ;
}
Большое спасибо, но этот вариант не работает с DOM.
Не думал, что и здесь найдутся "барыги", которые за пару строк удавятся.
Тему можно закрывать. Найден более легкий способ.
Спасибо всем.
Спойлер (Отобразить ) CODE (
htmlphp ):
скопировать код в буфер обмена
<? php
// Simple RSS parser v.1.0 by CyberSEO.net
$filename = "rss.php" ;
} else {
$cnt = min ( 10, count ( $index [ "ITEM" ] ) ) ; $content = "<table>" ;
for ( $i = 1 ; $i < $cnt ; $i ++ ) {
$content .= '<tr><td style="color:blue;"><a href="' . html_entity_decode ( $vals [ $index [ "LINK" ] [ $i + 1 ] ] [ "value" ] , ENT_QUOTES ) . '"><h3>' . html_entity_decode ( $vals [ $index [ "TITLE" ] [ $i + 1 ] ] [ "value" ] , ENT_QUOTES ) . '</h3></a></td></tr>' ; $content .= '<tr><td><img src=' . $aa [ 0 ] . ' width=100px style="float:left;margin: 7px 7px 7px 0;"/><p align="justify">' . html_entity_decode ( $vals [ $index [ "DESCRIPTION" ] [ $i ] ] [ "value" ] , ENT_QUOTES ) . '</p></td></tr>' ; }
$content .= "</table>" ;
}
echo $content ;
?>
Добавленные строки 12, 13, 15.
Поиск в теме | Версия для печати
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB