<?
if(isset($_GET['showsource'])) { highlight_file($_SERVER['SCRIPT_FILENAME']); die; }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
<?

function truncatePreserveWords ($h,$n,$w=5,$tag='b') {
    
$n explode(" ",strip_tags($n));    //needles words
    
$b explode(" ",strip_tags($h));    //haystack words
    
$c = array();                        //array of words to keep/remove
    
for ($j=0;$j<count($b);$j++) $c[$j]=false;
    for (
$i=0;$i<count($b);$i++) 
        for (
$k=0;$k<count($n);$k++) 
            if (
stristr($b[$i],$n[$k])) {
                
$b[$i]=preg_replace("/".$n[$k]."/i","<$tag>\\0</$tag>",$b[$i]);
                for ( 
$jmax$i-$w ) ;$j<min$i+$wcount($b)); $j++) $c[$j]=true
            }    
    
$o "";    // reassembly words to keep
    
for ($j=0;$j<count($b);$j++) if ($c[$j]) $o.=" ".$b[$j]; else $o.=".";
    return 
preg_replace("/\.{3,}/i","...",$o);
}

$s "Come nella sceneggiatura di una serie tv da college americano, metto piede nel tendone invernale del Magnolia e dal palco partono le prime note di \"SMS\". L'sms può essere l'inizio di una relazione e può essere in senso lato il primo di quei preliminari che danno il titolo al tour. In questo caso, però, è soprattutto l'apertura di un'ora e trenta in cui i Perturbazione si prendono palco, occhi e voce dei presenti. Di un fatto si può essere certi: il pubblico che affolla il Magnolia («e sappiamo quanto è difficile uscire il mercoledì sera», dice il cantante Tommaso Cerasuolo) è ben oltre i preliminari con il gruppo. C'è fiducia, conoscenza reciproca, complicità. Tutti cantano, ogni canzone viene riconosciuta alle prime note e accolta con urla soddisfatte. Il gruppo è affilato, compatto e il cambio di bassista – probabilmente uno dei motivi dietro questo mini-tour di cinque date – pare già ampiamente ammortizzato.";

echo 
"<div style='margin:10px;padding:10px;border:1px solid red'>$s</div>";

$s truncatePreserveWords($s"sceneggiatura sms serie tv"); 

echo 
"<div style='margin:10px;padding:10px;border:1px solid blue'>$s</div>";


?>
</body>
</html>