|
|
|
| Добрый день.
Хочу распарсить страницу и выдрать из таблицы данные. Но почему-то 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];
}
|
Сама таблица, если выводить её целиком, отображается нормально | |
|
|
|
|
|
|
|
для: Хулиган
(15.08.2010 в 11:05)
| | Вы бы строку в $tblContent посмотрели чтоли... | |
|
|
|
|
|
|
|
для: Trianon
(15.08.2010 в 11:22)
| | Дык я ж написал, что содержимое таблицы (tblContent) нормально выдрано.
Если tblContent выводить через echo, то рисуется таблица, вся целиком, без изъянов. | |
|
|
|
|
|
|
|
для: Хулиган
(15.08.2010 в 11:35)
| | $rows = array(); - это лишнее, explode и возвращает массив.
А его элементы ну никак не могут быть пустыми, ибо как минимум будут содержать в себе <tr><td></td>. | |
|
|
|
|
|
|
|
для: Хулиган
(15.08.2010 в 11:35)
| | Если Вы не хотите привести исходные и результирующие данные для фрагмента, в котором усматриваете ошибку за PHP, то что Вам еще посоветовать?
Фрагментом вы определили функцию explode() | |
|
|
|
|
|
|
|
для: Хулиган
(15.08.2010 в 11:05)
| | Наверное стоит смотреть исходный код страницы с дампом. | |
|
|
|
|
|
|
|
для: Саня
(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=®ion_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]) выводит кучу нулей | |
|
|
|
|
|
|
|
для: Хулиган
(15.08.2010 в 12:15)
| | Это что за хрень такая: strlen($rows[i]) ? | |
|
|
|
|
|
|
|
для: sim5
(15.08.2010 в 12:23)
| | длина не существующего элемента массива :) | |
|
|
|