работа с table

Статус
В этой теме нельзя размещать новые ответы.

lena berkova

Местный житель
Регистрация
14 Янв 2009
Сообщения
437
Реакции
21
подскажите как работать с тегами таблицы.
исходные данные - в переменной есть таблица с 2 колонками. нужно первые 2 рядка таблицы выкинуть, а значения остальных рядков загнать в массив (т.е. обе ячейки рядка)
попытка работы с таблицей как с хмл документом не сработала, как еще можно реализовать?
 
регулярными выражениями
 
Покажите скриншотом таблицу. Пометив зелёным что нужно загнать в массив, а что нужно убрать.

Думаю регулярным выражением можно. Но сначало нужно увидить пример таблицы (скриншот) + сам код таблицы
 
пример такой
<table style='font-family:Tahoma;font-size:8.5pt;width:468px;color:#006699;' border='0' cellspacing='5' cellpadding='3'>
<tr style='background-color:#174869;color:#000000;'><th>bla bla</th><th>bla bla</th></tr>
<tr style='color:#eee;'><td colspan='2'>bla bla bla bla bla bla</td></tr>
<tr><td>text1</td><td>value1</td></tr>
<tr><td>text2</td><td>value2</td></tr>
...
</table>

внутри тегов table\tr\td могут находиться всякие стили или еще мусор. причем в первой строке еще теги th используются
мне нужно выцепить все значения text\value
 
пример такой
внутри тегов table\tr\td могут находиться всякие стили или еще мусор. причем в первой строке еще теги th используются
мне нужно выцепить все значения text\value
блин...
я ж попросил дайте живой пример таблицы. Как составить регулярку не видя даже что вам нужно?
 
блин...
я ж попросил дайте живой пример таблицы. Как составить регулярку не видя даже что вам нужно?

так таблица со значениями может меняться, но структура в 2 колонки постоянная. или только на постоянную таблицу можно делать ?
 
PHP:
<?php

@error_reporting ( E_ALL ^ E_NOTICE );
@ini_set ( 'display_errors', true );
@ini_set ( 'html_errors', false );
@ini_set ( 'error_reporting', E_ALL ^ E_NOTICE );

// Массив который получится на выходе: $table

/* Таблица */

$html = <<<HTML
<table border='1'>
	<tr>
		<th>Наименование</th>
		<th>Цена</th>
	</tr>

	<tr>
		<td>Сухарики</td>
		<td>0.5 у.е.</td>
	</tr>

	<tr>
		<td>Семечки</td>
		<td>0.5 у.е.</td>
	</tr>

	<tr>
		<td>Пиво</td>
		<td>2 у.е.</td>
	</tr>
</table> 
HTML;

/* Вытягиваем название столбцов */

preg_match_all("#<th.*?>(.*?)</th>#is", $html, $out);
foreach($out['1'] as $key => $value)
{
	$table['titles'][] = $value;
}

/* Вытягиваем строчки */

preg_match_all("#<tr>.*?<td.*?>(.*?)</td>.*?<td.*?>(.*?)</td>.*?</tr>#is", $html, $out);
for($i=0; $i<count($out['1']); $i++)
{
	$table['rows'][$i][] = $out['1'][$i];
	$table['rows'][$i][] = $out['2'][$i];
}

/* Пример как из массива $table преобразовать назад таблицу */

echo "<table border='1'><tr>";
foreach($table['titles'] as $key => $value)
{
	echo "<th>".$value."</th>";
}
echo "</tr>";
foreach($table['rows'] as $row)
{
	echo "<tr>";
	foreach($row as $key => $value)
	{
		echo "<td>".$value."</td>";
	}
	echo "</tr>";
}
echo "</table>";

?>
 
*** скрытое содержание ***
Используй этот, решит все проблемы по парсингу html данных.

интересное решение, но ему обязательно нужно чистый хтмл передавать? у меня в переменной сразу таблица идет
конечно можно таблицу обернуть в хтмл, но как то некрасиво получится
 
передавай сразу как таблицу, без обертки
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху