Есть маленькое уточнение - ограничивать новость посимвольно не есть хорошо - возможно отрезание на каком-либо слове, поэтому лучше резать по словам, выводя, скажем, лишь некоторое их количество. Это частая задача и ее может решить такая функция (писалась мной давно и при некоторых малых изменениях работает нормально):
Код:
$Year = array('января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря');
function DrawTitleNews()
{
global $Year;
$DBLink = db_connect(DBHost, DBName, DBLogin, DBPassword, true);
$Query = 'SELECT
news.n_id,
news.n_cap,
news.n_full,
news.n_date
FROM
news
ORDER BY
news.n_date DESC
LIMIT 3';
//echo nl2br($Query);
$Result = mysql_query($Query);
//есть ли новости? Есть? Выводим.
if (mysql_num_rows($Result) > 0)
{
echo '<tr height="14">
<td align="center">
<table width="90%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td colspan="2">
<table width="100%" cellspacing="0" cellpadding="0" border="0">
<tr>
<td class="newscap">Последние новости</td>
<td class="newsdate" nowrap>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="30"><img src="/img/1pxtr.gif" width="30" height="1" alt=""></td>
<td class="newsbody" width="100%">
<table width="100%" cellspacing="0" cellpadding="0" border="0">';
while ($NewsInfo = mysql_fetch_array($Result, MYSQL_ASSOC))
{
//делим дату формата YYYY-mm-dd на составляющие
$DT = explode('-', $NewsInfo['n_date']);
//в $NewsBody теперь WordsPerNews слов
$NewsBody = implode(' ', array_slice(explode(' ', $NewsInfo['n_full']), 0, WordsPerNews));
//проверяем необходимость вывода новости в укороченном виде
if (strlen($NewsBody) < strlen($NewsInfo['n_full']))
{
$NewsBody .= '<acronym class="redb" title="Это многоточие означает, что новость показана в укороченном виде.
Ниже каждой такой новости есть ссылка для доступа к
полному тексту новости.">...</acronym>';
$FullLnk = '<tr><td colspan="2"><img src="/img/1pxtr.gif" width="1" height="1" alt=""></td></tr>
<td align="right" colspan="2"><a class="dblue" href="/news/'.$NewsInfo['n_id'].'"
target="_blank" title="Перейти к просмотру полного текста новости в новом окне.">
полностью'.ImgBArrowRight.'</a></td>
<tr><td colspan="2"><img src="/img/1pxtr.gif" width="1" height="8" alt=""></td></tr>';
}
else
$FullLnk = '<tr><td colspan="2"><img src="/img/1pxtr.gif" width="1" height="8" alt=""></td></tr>';
echo '<tr height="14">
<td align="center">
<table width="90%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td colspan="2">
<table width="100%" cellspacing="0" cellpadding="0" border="0">
<tr>
<td class="dnewscap">
<h2>'.$NewsInfo['n_cap'].'</h2>
</td>
<td class="dnewsdate" nowrap>
'.($DT[2]+0).' '.$Year[$DT[1]-1].' '.$DT[0].'
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="30"><img src="/img/1pxtr.gif" width="30" height="1" alt=""></td>
<td class="dnewsbody" width="100%"><p class="normal_padl20">'.$NewsBody.'</p></td>
</tr>
'.$FullLnk.'
</table>
</td>
</tr>';
}
echo ' </table>
</td>
</tr>
<tr><td colspan="2"><img src="/img/1pxtr.gif" width="1" height="1" alt=""></td></tr>
<tr><td colspan="2" align="right"><a class="dblue" href="/news/all">архив'.ImgBArrowRight.'</a></td></tr>
<tr><td colspan="2"><img src="/img/1pxtr.gif" width="1" height="8" alt=""></td></tr>
</table>
</td>
</tr>';
}
}
У меня новости берутся из БД, но в общем и целом не важно откуда происходят данные... только в коде разобраться надо
. Как это выглядит при выводе можно поглядеть
тут