Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: хостинг игнорирует скрипт
 
 автор: выдр   (06.04.2007 в 15:34)   письмо автору
 
 

у меня такая проблема: при закачке на хостинг скрипта, читающего rss канал он не запускается. просто пустая страница и все. если туда же закачать и xml файл, скрипт его прочитает, а при указании других каналов ничего не пишет. совсем, даже ошибок.
вот он:

<?php // Load and parse the XML document 
$rss =  simplexml_load_file('index.xml');
$title =  $rss->channel->title;
?>
<html xml:lang="ru" lang="ru">
<head>
  <title><?php echo $title?></title>
</head>
<body>

<h1><?php echo $title?></h1>

<?php
// Здесь мы поместим цикл, чтобы включить заголовок элемента и описание
foreach ($rss->channel->item as $item) {
  echo 
"<h2><a href='"$item->link"'>"$item->title"</a></h2>";
  echo 
"<p>"$item->description"</p>";
}
?>



а вот такой скрипт читает и внешние каналы, но отображает только 3 новости

<?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]),
       
'pubdate'=>$temp[1],  
       
'title'=>$temp[2],
       
'link'=>$temp[3],
       
'desc'=>$temp[4]

   );
}

/**********************************************************
* Parse Array data into an HTML structure                *
* Usage: string parse_rss ( array data )                 *
**********************************************************/
function output_rss($pattern$rss_data) {
// for($i=0; $i<$rss_data['count']; $i++) {
   
for($i=0$i<3$i++) {
       
$temp .= sprintf($pattern,
           
html_entity_decode($rss_data['pubdate'][$i]),     
           
$rss_data['link'][$i],
           
html_entity_decode($rss_data['title'][$i]),
           
html_entity_decode($rss_data['desc'][$i])

  
       );
   }
   return 
$temp;
}

/**********************************************************
* Settings                                               *
**********************************************************/

$url 'index.xml';

$reg_exp  '#<item>.*?<pubDate>(.*?)<\/pubDate>.*?';
$reg_exp .='<title>(.*?)<\/title>.*?';
$reg_exp .='<link>(.*?)<\/link>.*?';
$reg_exp .='<description>(.*?)<\/description>.*?';
$reg_exp .='<\/item>#si';
$pattern '<span class="date2">%s</span><br><br><a href="%s"><b>%s</b></a><br><br>%s<br><div class="line"></div>';
//ereg_replace("+0400", "df", $pattern); 

/**********************************************************
* 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                                                *
**********************************************************/
?>


пожалуйста, подскажите что делать с первым или как заставить 2-ой показывать все? заранее благодарен.

   
 
 автор: XPraptor   (06.04.2007 в 15:37)   письмо автору
 
   для: выдр   (06.04.2007 в 15:34)
 

На хостинге запрещен доступ к внешним файлам. Либо IP хоста забанен новостным сервером, либо новостной хост определяет робота и пользователя и не выдает роботам новости.

   
 
 автор: выдр   (06.04.2007 в 15:56)   письмо автору
 
   для: XPraptor   (06.04.2007 в 15:37)
 

дак в том то и дело, что нет! второй скрипт ведь новости получает, только не все выводит

   
 
 автор: XPraptor   (06.04.2007 в 16:00)   письмо автору
 
   для: выдр   (06.04.2007 в 15:56)
 


function output_rss($pattern, $rss_data) { 
// for($i=0; $i<$rss_data['count']; $i++) { 
   for($i=0; $i<3; $i++) 



$i<3 - дальше объяснять нужно?

   
 
 автор: выдр   (06.04.2007 в 16:24)   письмо автору
 
   для: XPraptor   (06.04.2007 в 16:00)
 

это я уже смотрел, исправлял на большие числа-- без разницы :-(

   
 
 автор: XPraptor   (06.04.2007 в 16:35)   письмо автору
 
   для: выдр   (06.04.2007 в 16:24)
 

Что сомтрели? У вас закомментирована строка выводящая полное кол-во новостей, а вместо нее вставлен цикл от 0 до 2. убюерите цикл и расскомментируйте полный вывод.

   
 
 автор: выдр   (06.04.2007 в 16:49)   письмо автору
 
   для: XPraptor   (06.04.2007 в 16:35)
 


function output_rss($pattern, $rss_data) {
   for($i=0; $i<$rss_data['count']; $i++) {
       $temp .= sprintf($pattern,
           html_entity_decode($rss_data['pubdate'][$i]),     
           $rss_data['link'][$i],
           html_entity_decode($rss_data['title'][$i]),
           html_entity_decode($rss_data['desc'][$i])

  
       );
   }


вот так? всеравно только 3 новости

   
 
 автор: XPraptor   (06.04.2007 в 16:54)   письмо автору
 
   для: выдр   (06.04.2007 в 16:49)
 

А сколько у вас новостей позвольте спросить в index.xml находится?

   
 
 автор: выдр   (06.04.2007 в 17:04)   письмо автору
 
   для: XPraptor   (06.04.2007 в 16:54)
 

7

   
 
 автор: XPraptor   (06.04.2007 в 17:32)   письмо автору
 
   для: выдр   (06.04.2007 в 17:04)
 

А все соответствуют формату, может где ошибка после третьей новости есть и парсер прекращает разбор? И может еще кэш не перегружается, попробуйте сбросить и открыть страницу заново.

   
 
 автор: выдр   (06.04.2007 в 17:45)   письмо автору
 
   для: XPraptor   (06.04.2007 в 17:32)
 

нет, я даже эксперимент провел: удалил из xml файлика одну из выводимых новостей, так вместо нее просто другая появляется

   
 
 автор: XPraptor   (07.04.2007 в 02:27)   письмо автору
 
   для: выдр   (06.04.2007 в 17:45)
 

Вообще очень плохой скрипт для разбора. Вот этот код может вызывать проблеммы:

function parse_rss($reg_exp, $xml_data) { 
   preg_match_all($reg_exp, $xml_data, $temp); 
   return array( 
       'count'=>count($temp[0]),


Здесь preg_match_all находит все варианты парсинга в файле и помещает их в массив $temp. А потом проверяется сколько он нашел новостей count($temp[0])
Но в temp[0] попадают только полные совпадения по шаблону. Если где то что то не нашлось, то оно туда не попадет. Скорее всего проблемма в этом.

   
 
 автор: выдр   (07.04.2007 в 03:51)   письмо автору
 
   для: XPraptor   (07.04.2007 в 02:27)
 

не подскажите, что нужно делать? в php очень мало понимаю, а скрипт нужен скоро

   
 
 автор: XPraptor   (07.04.2007 в 06:39)   письмо автору
 
   для: выдр   (07.04.2007 в 03:51)
 

Дайте сюда ваш index.xml, я проверю и подправлю.

   
 
 автор: выдр   (07.04.2007 в 10:41)   письмо автору
 
   для: XPraptor   (07.04.2007 в 06:39)
 

извине пожалуйста, похоже что это все-таки хостинг... я думал что он файлы берет из внешнего канала, а утром посмотрел код, и оказалось, что от читал все тотже index.xml только на хостинге (они в одной папке лежали). буду другой хостинг искать

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования