слиение ячеек в таблице

DNiS

Новичок
слиение ячеек в таблице

Есть таблица с 4-мя колонками(по 500 строк). Три(1,3,4) из них текст, а вторая с урлами(http://sitename).
Надо чтобы из 4-ой колонки текст ячеек, был названием ссылок в 2-ой колонке в ячейке.
Например:
Колонка#1 Колонка#2 Колонка#3 Колонка#4
abc http://sitename qwe blabla
В результате получить равное кол-во строчек, как и в предыдущей таблице, т.е там было 500 строчек, и в новом файле получилось 500 соотвественно... в новом файле должна быть только одна колонка, такого вида:
blabla
 

zerkms

TDD infected
Команда форума
а данные из этой таблицы изначально откуда берутся...

или это готовый ХТМЛ??
 

saa

Guest
DNiS, вообще то это не в пхп'шный форум вопрос, <td colspan="...">.
 

Peper

Guest
че то я не понял в чем проблема, то?
Тебе надо таблицу, чтоли преобразовать? И ты не хочешь ручками 500 строчками переберать, а автоматически как то это сделать?
 

DNiS

Новичок
Peper, вообще-то руками не особо хотется перебирать 2К+ строк.
Нужно чтоб автоматически было, т.к много таких таблиц накопилось.
 

saa

Guest
Дык тебе нужен regexp или что? Ты объясни понятнее - чего мы гадаем то.
 

DNiS

Новичок
проблема в том, что я не совсем представляю как это реализовать... я вот думаю, что надо счиатать весть текст, как то проанализировать его, чтобы из него выделить такие блоки,
<tr>
<td>abc</td>
<td><a href="http://sitename" target="_blank">http://sitename</a></td>
<td>cba</td>
<td>blabla</td>
</tr>
и потом от сюда каким-то образом считать в массив, а далее я уже представляю что делать...
 

saa

Guest
Я правильно понял, что задача сводится к вырезанию четвертой колонки?
 

DNiS

Новичок
хм..
вообще-то наверно 2 и 4 надо в массив наверно считать.. и ещё как-то заменить название самой ссылка на 4-ю колонку.
т.е чтобы была вот такая ссылка:
<a href="http://sitename" target="_blank">blabla</a>

-~{}~ 30.07.04 17:12:

вот так наверное будет более ясно, на примере 3-х строк:
<table>
<tr>
<td>abc</td>
<td><a href="http://sitename" target="_blank">http://sitename</a></td>
<td>cba</td>
<td>blabla</td>
</tr><tr>
<td>abc</td>
<td><a href="http://sitename" target="_blank">http://sitename</a></td>
<td>cba</td>
<td>blabla</td>
</tr><tr>
<td>abc</td>
<td><a href="http://sitename" target="_blank">http://sitename</a></td>
<td>cba</td>
<td>blabla</td>
</tr>
</table>
В ИТОГЕ ДОЛЖНО БЫТЬ ВОТ ТАКИЕ ТРИ ССЫЛКИ:
<a href="http://sitename" target="_blank">blabla</a><br>
<a href="http://sitename" target="_blank">blabla</a><br>
<a href="http://sitename" target="_blank">blabla</a>
 

Peper

Guest
Тупой способ могу предложить. Знаю, что все делается через regexp быстрее и красивше, но влом вспоминать.
Итак способ такой:
разделяешь таблицу на строки.
В каждой строке разделяешь на столбцы. 2-й и 4-й твои.
Как разделять на строки:
допустим твоя таблица в переменной $str

while($str){
$pos=strpos($str, "</tr>");
$tr[]=substr($str, 0,$pos);
$str=substr($str,$pos);
}

в результате в массиве $tr твои строки. подобным образом строка разделяется на столбцы
 

IL78

Guest
DNiS, на твоем примере вроде работает вот это:
PHP:
$example = '<table ...  </table>'; // исходная таблица

$pattern = "~<tr[^>]*>\s*<td[^>]*>[^<]*</td>\s*<td[^>]*>\s*<a[^>]+href=\"?([^>]+)\"? ?[^>]+>[^<]+</a>\s*</td>\s*<td[^>]*>[^<]*</td>\s*<td[^>]*>([^<]*)</td>\s*</tr>~si";

preg_match_all($pattern,$example,$matches,PREG_SET_ORDER);

$num_lines = count($matches);

for($i=1;$i<=$num_lines;$i++) {
	echo '<a href="'.$matches[$i][1].'" target="_blank">'.$matches[$i][2].'</a>';
	if ($i<$num_lines) echo "<br>\n";
}
Жду баг-репортов... ;)
 
Сверху