Разрезка текстового блока с тегами внутри...

  • Автор темы Yevgeni Maltsev
  • Дата начала

Yevgeni Maltsev

Guest
Разрезка текстового блока с тегами внутри...

Есть проблема, решение которой, я пока найти не могу:

* Есть текстовый блок, он находится в безе, есть некое количество картинок.

* Нужно разрезать тектовый блок на несколько блоков, количество которых равно количеству картинок.

Все бы ничего, но в текстовом блоке есть html теги и иногда граница блока как раз попадает на html тег. Между блаками я вывожу картинки и получается, что теги разрезаются...

Подскажите как этого избежать?
 

SiMM

Новичок
> Подскажите как этого избежать?
Разрезать "ручками", используя какой нибудь специальный тег. Тем более что разрезать "осмысленно", а не как попало, да ещё и чтобы у блока была подходящая к контенту картинка, программно врядли реально.
 

Yevgeni Maltsev

Guest
Решение нашел...
Вот пример кода:

function Show_Type04ex() {
global $mysqli, $_GET;

$start_pos = 0;

$news_id = $_GET['id'];

$iqr = $mysqli->query('SELECT id FROM cms_contents_type_details WHERE sub_parent='.$news_id);
$qr = $mysqli->query('SELECT name, UNIX_TIMESTAMP(dt_added) AS date, html_contents AS contents FROM cms_contents_type WHERE id='.$news_id);
$fr = $qr->fetch_object();

$image_count = $iqr->num_rows;
$text_length = strlen(ParseHTML($fr->contents));

echo '<table border="0" cellspacing="0" cellpadding="2">';
echo '<tr><td width="10" valign="top" align="center"><img src="../images/sert_.gif"></td><td><span class="sub_title">'.$fr->name.'</span></td></tr>';
echo '<tr><td></td><td><span class="news_date">'.date('d-m-Y г., H:i мин. ',$fr->date).'</span></td></tr>';
echo '<tr><td></td><td><p>';

if ($image_count <> 0) {
$i = 0;
while ($ifr = $iqr->fetch_object()) {
$text_block = round($text_length / $image_count);
if ($i == 0) {
echo '<div class="fotonewsstart"><img src="../images.php?id='.$ifr->id.'&type=1" alt="" /></div>';

$text_block_start = strpos(ParseHTML($fr->contents),'>', $start_pos);
$text_block_start = $text_block_start + 1;

$text_block_end = strpos(ParseHTML($fr->contents),'>', $text_block);
$text_block_end = $text_block_end + 1;

echo substr(ParseHTML($fr->contents), $text_block_start, $text_block_end);
} else {
echo '<div class="fotonews"><img src="../images.php?id='.$ifr->id.'&type=1" alt="" /></div>';

$text_block_start = $text_block_end;

if (($text_block_start + $text_block) >= $text_length) {
$text_block_end = $text_length;
} else {
$text_block_end = strpos(ParseHTML($fr->contents),'>', $text_block_start + $text_block);
$text_block_end = $text_block_end + 1;

if (($text_block_end - $text_block_start) > $text_block) {
$text_block_end = strpos(ParseHTML($fr->contents),' ', $text_block_start + $text_block);
}
}

echo substr(ParseHTML($fr->contents), $text_block_start, $text_block_end - $text_block_start);
}

$i++;
}
echo '</p></td></tr>';
} else {
echo '<tr><td></td><td><p>'.ParseHTML($fr->contents).'</p></td></tr>';
}
echo '</table>';
}

Код еще сырой... нужно причесывать... но работает.
 
Сверху