Mettiamo caso che il contenuto della tua news tu l'abbia già estratto dal DB e ce l'abbia in una variabile $testo_news, usa questa funzione:
Codice PHP:
function tronca_stringa($stringa, $max_length){
if (strlen($stringa) > $max_length) {
$stringa_cut = substr($stringa,0,$max_length);
$last_stringa = substr($stringa_cut,-7,$max_length);
if ((stripos($last_stringa, '&'))!=FALSE ){
$max_length = $max_length+7;
}
$stringa = substr($stringa,0,$max_length);
$stringa .= '...';
}
return strip_tags($stringa, '
');
}
Utilizzo:
Codice PHP:
echo tronca_stringa($testo_news, 100);
Aggiunge i tre puntini (che puoi commentare se non ti servono), gestisce i caratteri speciali (à etc..) e elimina i tags in modo che non si formi un layout errato a causa di tags html non chiusi oltre la lunghezza della stringa stessa.
Sulla seconda domanda dipende anche come hai strutturato il DB comunque il metodo più utilizzato è passare l'id della news su una nuova pagina dove effettuare la query e selezionare nuovamente i dati dal DB stampando poi l'intera news.