текст+теги на две колонки

zuxel

Новичок
текст+теги на две колонки

Понадобилось решить задачу разбивки текста на две колонки, сложность в том, что контент выводится CMS, куда забивается через WYSING редактор, т.е. после того как пользователь заканчивает редактировать текст, то к нему чаще всего добавляет ся какое-то форматировние, т.е. теги. На первое время сделал деление таким образом:
PHP:
$text= $row->text;				
$l = intval( strlen( $text ) / 2 + strlen( $text ) * 0.02 ); 
$text = ereg_replace("[\r\n]"," ",$text); 				
preg_match_all("/(.{1,$l})[ \n\r\t]+/", $text, $ok); 				

$row->text = "
<table border=\"0\"  >
<tr>
	<td valign=\"top\" width=\"40%\" style=\"padding-right: 40px;\">{$ok[1][0]}</td>
	<td valign=\"top\" width=\"40%\" style=\"padding-right: 40px;\">{$ok[1][1]}</td>
</tr>
</table>
";
т.е. он просто делится пополам, проблема в том, что такой способ не умеет различать форматирование и легко может разнести к примеру

<span style="color:red;"></span>
на
<td><span </td>
и
<td>style="color:red;"></span> </td>

Можно, конечно, после середины пробегаться по строке и заканчивать первую колонку после первого встреченного закрывающего тега, но если теги будут большой вложенности? Может есть мысли как реализовать такую разбивку?
 

newARTix

Новичок
если брать во внимание вложенность тегов, то получается что необходимо разделить DOM-модель "посередине". А что есть "середина" у DOM? Вопрос не имеет смысла.
Если же все-таки забить на вложенность, то предложенный вами метод вполне подходит.
Кроме того, зачем такое разделение может понадобиться? Верстка - штука неделимая. Если вам необходимо сохранить только оформление, то стоит сначала отфильтровать теги, оставить только <b><a><i> и т.п. Тогда может быть и можно что-то разделить...
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Можно, конечно, после середины пробегаться по строке и заканчивать первую колонку после первого встреченного закрывающего тега, но если теги будут большой вложенности?
беги по строке, строй список тегов, те которые к середине остались открытыми — закрой, в новой колонке открой их же.
 

Фанат

oncle terrible
Команда форума
Или крестик снять, или трусики надеть.
Или визивигом форматировать - тогда пусть там в две колонки и шпарит.
Или отобрать визивиг и форматировать все скриптом, что предпочтительнее.
 
Сверху