![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 02.02.2011
Сообщений: 24
|
![]()
Здраствуйте.
В общих чертах так. Есть rss лента, я из ее по средствам php широко известным скриптом который напишу в конце извлекаю последнюю новость и и заношу ее в БД. Но почемуто по окончании скрипта от новости остается текст вроде такого - "летний Р¶РёС". Причем http://www.secnews.ru/russian/rss.php работает нормально, а если брать ленту например http://news.yandex.ru/Gorno-Altaysk/index.rss то все плохо. Из всех лент нормально только одна открывается, все остальные криво. Вот пример что у меня получается http://gorno-altaysk.com/rss/read_rss.php Прошу помощи. Вот обещанный скрипт <?PHP /*********************************** *********************** * Parse XML data into an array structure * * Usage: array parse_rss ( string data ) * *********************************** ***********************/ function parse_rss($reg_exp, $xml_data) { preg_match_all($reg_exp, $xml_data, $temp); return array( 'count'=>count($temp[0]), 'title'=>$temp[1], 'link'=>$temp[2], 'desc'=>$temp[3], 'pubdate'=>$temp[4] ); } /*********************************** *********************** * Parse Array data into an HTML structure * * Usage: string parse_rss ( array data ) * *********************************** ***********************/ function output_rss($pattern, $rss_data) { $temp = ''; /* for($i=$rss_data['count'] - 1; $i>-1; $i--) { */ $temp .= sprintf($pattern, $rss_data['link'][0.5], html_entity_decode($rss_data['title'][0.5]), html_entity_decode($rss_data['desc'][0.5]), html_entity_decode($rss_data['pubdate'][0.5]) ); /* }*/ return $temp; } /*********************************** *********************** * Settings * *********************************** ***********************/ /* $url = 'http://www.secnews.ru/russian/rss.php'; / /* $url = 'http://gorno-altaisk.ru/index.php?format=feed&type=rss'; */ $url = 'http://news.yandex.ru/Gorno-Altaysk/index.rss'; $reg_exp = '#<item>.*?<title>(.*?)<\/title>.*?'; $reg_exp .='<link>(.*?)<\/link>.*?<description>'; $reg_exp .='(.*?)</description>.*?<pubDate>'; $reg_exp .= '(.*?)<\/pubDate>.*?<\/item>#si'; $pattern = '<a href="%s">%s</a><br>%s<br>Date:%s<hr>'; /*********************************** *********************** * Main script * *********************************** ***********************/ if ( $xml_data = file_get_contents($url) ) { $rss_data = parse_rss($reg_exp, $xml_data); echo output_rss($pattern, $rss_data); } /*********************************** *********************** * The END * *********************************** ***********************/ ?> Последний раз редактировалось Furyon; 12.04.2011 в 21:58. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 07.09.2009
Сообщений: 361
|
![]()
смотреть в какой кодировке rss и используя iconv() менять на нужную
Последний раз редактировалось MrJenika; 12.04.2011 в 22:33. |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 08.01.2011
Сообщений: 226
|
![]()
Либо используя мою функцию автоматом преобразовать в Win-1251 кодировку:
Код:
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 12.11.2010
Сообщений: 146
|
![]()
вообще удобно использовать UTF8, кстати нужно ещё исключить недопустимые знаки потому как xml строго относится ко всем упущениям и ошибкам(в итоге невалидный RSS)!
PHP код:
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
проблема с кодировкой | serres | PHP | 0 | 05.04.2011 19:12 |
Проблема с кодировкой | Abuhamed | PHP | 2 | 25.12.2010 21:47 |
проблема с кодировкой | kirosin | HTML и CSS | 3 | 08.10.2010 15:11 |
проблема с кодировкой | tred | Помощь студентам | 7 | 05.07.2010 13:55 |
Проблема с кодировкой | motorway | Microsoft Office Excel | 3 | 03.07.2009 22:27 |