Ciao compaesano!
Ho scritto queste righe spinto da un impulso campanilistico!
Codice PHP:
<?php
$frase 
"Questa è un articolo molto lungo.\nUna frase\n".
            
"a cavallo. Voglio riuscire a estrapolarne una introduzione. Deve essere lunga circa 150 caratteri.".
            
"Frase uno.\n".
            
"Frase 2. Frase 3. Complichiamo con un indirizzo web [url]www.ciao.it.[/url] Altra frase un po' più lunga.";

$numero_di_caratteri 150;

preg_match_all("/(\.\s)+/",$frase,$out,PREG_OFFSET_CAPTURE);

$minima_distanza strlen($frase);
$offset_minima_distanza false;

foreach (
$out[0] as $offset)
{
    
$distanza abs($numero_di_caratteri $offset[1]);
    if(
$distanza $minima_distanza)
    {
        
$minima_distanza $distanza;
        
$offset_minima_distanza $offset[1];
    }
}

echo 
substr($frase0$offset_minima_distanza 1);
?>
ti restituiscono una introduzione della $frase con lunghezza variabile ma il più vicina possibile ai $numero_di_caratteri
La frase viene tagliata nei punti in cui c'è un punto seguito da uno spazio o un accapo o una tabulazione ecc.
Richiesto PHP 4.3 e superiori
Fammi sapere se funziona!

P.S.: Forza Bari, tutti in C