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

Форум PHP

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

 

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

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

тема: explode создаёт массив с пустыми элементами
 
 автор: Хулиган   (15.08.2010 в 11:05)   письмо автору
 
 

Добрый день.
Хочу распарсить страницу и выдрать из таблицы данные. Но почему-то explode работает не так как ожидается. Создается массив, по числу элементов всё правильно. Но элементы в массиве пустые.

        $start = stripos($contents, "<table", $start);
        $end = stripos($contents, "</table>", $start) + 8;
        $tblContent = substr ($contents, $start, $end-$start);
        
        $rows = array();
        $rows = explode ("</tr>", $tblContent);
        

        echo count($rows);
        for ($i=0; $i<count($rows); $i++){
            echo strlen($rows[i]);
            echo $rows[i];
        }


Сама таблица, если выводить её целиком, отображается нормально

  Ответить  
 
 автор: Trianon   (15.08.2010 в 11:22)   письмо автору
 
   для: Хулиган   (15.08.2010 в 11:05)
 

Вы бы строку в $tblContent посмотрели чтоли...

  Ответить  
 
 автор: Хулиган   (15.08.2010 в 11:35)   письмо автору
 
   для: Trianon   (15.08.2010 в 11:22)
 

Дык я ж написал, что содержимое таблицы (tblContent) нормально выдрано.
Если tblContent выводить через echo, то рисуется таблица, вся целиком, без изъянов.

  Ответить  
 
 автор: sim5   (15.08.2010 в 11:37)   письмо автору
 
   для: Хулиган   (15.08.2010 в 11:35)
 

$rows = array(); - это лишнее, explode и возвращает массив.
А его элементы ну никак не могут быть пустыми, ибо как минимум будут содержать в себе <tr><td></td>.

  Ответить  
 
 автор: Trianon   (15.08.2010 в 11:55)   письмо автору
 
   для: Хулиган   (15.08.2010 в 11:35)
 

Если Вы не хотите привести исходные и результирующие данные для фрагмента, в котором усматриваете ошибку за PHP, то что Вам еще посоветовать?

Фрагментом вы определили функцию explode()

  Ответить  
 
 автор: Саня   (15.08.2010 в 11:39)   письмо автору
 
   для: Хулиган   (15.08.2010 в 11:05)
 

Наверное стоит смотреть исходный код страницы с дампом.

  Ответить  
 
 автор: Хулиган   (15.08.2010 в 12:15)   письмо автору
 
   для: Саня   (15.08.2010 в 11:39)
 

вот полный код. Без купюр:

$source = "http://cars.auto.ru/cars/used/volkswagen/passat/?currency_key=RUR&price_usd[1]=&price_usd[2]=&year[1]=0&year[2]=0&client_id=0&has_photo=1&body_key=&region_id=87&stime=1&available_key=&m[]=6279&m[]=6284&m[]=6446&m[]=12210";
    $contents = "";
    $handle = fopen($source, "r");
    if ( $handle ) {
        while (!feof($handle)) {
            $contents .= fread($handle, 8192);
        }
        fclose($handle);

        $start = stripos($contents, "Всего записей: <span>", 0);
        $start = stripos($contents, "<table", $start);
        $end = stripos($contents, "</table>", $start) + 8;
        $tblContent = substr ($contents, $start, $end-$start);
        
        $rows = array();
        $rows = explode ("</tr>", $tblContent);
        

        echo count($rows);
        for ($i=0; $i<count($rows); $i++){
            echo strlen($rows[i]);
            echo $rows[i];
        }
        
        
        echo $tblContent;
    }
    


Сама таблица рисуется, а в разбивке по строкам - ничего нет. strlen($rows[i]) выводит кучу нулей

  Ответить  
 
 автор: sim5   (15.08.2010 в 12:23)   письмо автору
 
   для: Хулиган   (15.08.2010 в 12:15)
 

Это что за хрень такая: strlen($rows[i]) ?

  Ответить  
 
 автор: Valick   (15.08.2010 в 12:31)   письмо автору
 
   для: sim5   (15.08.2010 в 12:23)
 

длина не существующего элемента массива :)

  Ответить  
Rambler's Top100
вверх

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