Splurov
Новичок
Логически верная разбивка текста на две колонки
Задача. Текст (с html-кодом) нужно разбить на две колонки. Текста в них должно быть примерно одинаково.
Проблема. Логически верно разбить текст, т.е. если середина текста является серединой предложения, то всё предложение должно остаться в одной колонке. Так же в тексте могут находится теги (<a href=...>, <p>, <br /> и другие) - это тоже надо учесть.
Пытался сделать примерно так:
Логика не сохраняется... Каким образом можно обрезать/обрабатывать текст, чтобы сохранялась логика?
Задача. Текст (с html-кодом) нужно разбить на две колонки. Текста в них должно быть примерно одинаково.
Проблема. Логически верно разбить текст, т.е. если середина текста является серединой предложения, то всё предложение должно остаться в одной колонке. Так же в тексте могут находится теги (<a href=...>, <p>, <br /> и другие) - это тоже надо учесть.
Пытался сделать примерно так:
PHP:
<html><body>
<?php
$text='<p>По тем или иным причинам, код счётчиков систем интернет-статистики зачастую приходится скрывать на странице. Оставим в стороне правомерность этого действия (читайте внимательно правила конкретного счётчика) и рассмотрим способы сокрытия.</p>
<p>Самый тривиальный способ, который я, должен признать, долгое время использовал, не ведая о его недостатках:</p>
<p><code><div <strong class="high">style="display:none"</strong>><br />
<!-- SuperLog --><br />
код счётчика<br />
<!-- /SuperLog --><br />
</div></code></p>
<p>Всё очень просто — с помощью свойства <a href="http://www.w3.org/TR/CSS21/visuren.html#propdef-display">display</a> мы убираем из layout\'а страницы код счётчика, <em>при этом</em> Internet Explorer и Mozilla всё равно обрабатывают этот код и загружают спрятанную картинку-счётчик.</p>
<p>Как оказалось <a href="http://imfo.ru/archive/2004/01/29/display_none_invisible_counter">из небольшой, но ценной дисскусии</a>, Opera и Safari <em>не</em> загружают картинку-счётчик. Это плохо, т. к. в таком случае мы теряем некоторых посетителей.</p>
<p>В итоге родился такой вот CSS класс (несколько избыточный, но да будет так), который устраивает все современные браузеры:</p>
<p><code>div.stats{<br />
display:inline;<br />
height:0px;<br />
left:-1000px;<br />
margin:0px;<br />
padding:0px;<br />
position:absolute;<br />
top:-1000px;<br />
visibility:hidden;<br />
width:0px<br />
}</code></p>
<p>В HTML (желательно, сразу после <code>body</code>) пишем таким образом:</p>
<p><code><div <strong class="high">class="stats"</strong>><br />
<!-- SuperLog --><br />
код счётчика<br />
<!-- /SuperLog --><br />
</div></code>';
$tLa=(strlen ($text))/2;
$tL= ceil($tLa);
$tL1= $tL;
$tL2= $tL-2;
$text1= substr ($text, 0, $tL1);
$text2= substr ($text, $tL2);
preg_match ('/^[^.?!>]*[.?!>]/',$text2,$match);
$text1.=$match[0];
$text2=substr($text2, strlen($match[0]));
echo $text1."\n\n\n\n".$text2;
?>
</body></html>