Codice PHP:
function HighLight($occurrence, $text, $color="#00CCCC"){
array_multisort($occurrence, SORT_DESC, SORT_NUMERIC);
$relevant = array_keys($occurrence);
if(strpos($text, $relevant[0]) > 200)
$init = 200;
else
$init = strpos($text, $relevant[0]);
$highlight = substr($text, (strpos($text, $relevant[0])-$init), 300);
foreach($relevant as $key){
$search = array(" ".$key." ",
" ".$key.".",
" ".$key.",",
" ".$key.";",
" ".$key.":",
" ".$key."?",
" ".$key."!",
"'".$key."'",
" ".$key."'",
"'".$key." ",
"\"".$key."\"",
" ".$key."\"",
"\"".$key." ",
"(".$key.")",
" ".$key.")");
$replace = array(' <font style="background-color:'.$color.' ">'.$key.'</font> ',
' <font style="background-color:'.$color.' ">'.$key.'</font>.',
' <font style="background-color:'.$color.' ">'.$key.'</font>,',
' <font style="background-color:'.$color.' ">'.$key.'</font>;',
' <font style="background-color:'.$color.' ">'.$key.'</font>:',
' <font style="background-color:'.$color.' ">'.$key.'</font>?',
' <font style="background-color:'.$color.' ">'.$key.'</font>!',
'\\'<font style="background-color:'.$color.' ">'.$key.'</font>\'',
' <font style="background-color:'.$color.' ">'.$key.'</font>\'',
'\\'<font style="background-color:'.$color.' ">'.$key.'</font> ',
'"<font style="background-color:'.$color.' ">'.$key.'</font>"',
' <font style="background-color:'.$color.' ">'.$key.'</font>"',
'"<font style="background-color:'.$color.' ">'.$key.'</font> ',
'(<font style="background-color:'.$color.' ">'.$key.'</font>)',
' <font style="background-color:'.$color.' ">'.$key.'</font>)');
$highlight = str_replace($search, $replace, $highlight);
}
return $highlight;
}
$text = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut nec tortor. Nulla molestie purus quis felis. Sed condimentum, est non blandit placerat, elit diam tempor lorem, sit amet ornare orci mauris nec dui. Duis in tortor. In nibh dolor, egestas sed, rutrum nec, elementum quis, ligula. In nonummy risus vel nibh. In posuere massa commodo nibh lobortis laoreet. Duis ipsum. Ut sed ligula id dui molestie ultrices. Sed vitae dolor. Sed viverra felis facilisis neque. Vestibulum id eros. Donec non eros. Vivamus odio. Fusce dictum felis malesuada purus. Sed fringilla lorem vel sapien. Aenean rutrum facilisis nisi.";
$occurrence = array();
$occurrenceShort = array();
$clear = array(',', ';', '?', '!', '"', '£', '$', '%', '/', '\\','(', ')', '=', '\'', '.');
$replace = " ";
$regex = "([[:space:]]{2,})";
$search = explode(" ", trim(preg_replace($regex, " ", str_replace($clear, $replace, trim($_POST['search'])))));
if(!empty($search[0])){
foreach($search as $key){
if(strlen($key)>3)
$occurrence[$key] = substr_count($text, " ".$key);
elseif(strlen($key)!=1)
$occurrenceShort[$key] = substr_count($text, " ".$key);
}
}
if(count($occurrence) != 0){
$highlight = HighLight($occurrence, $text);
}
elseif(count($occurrenceShort) != 0){
$highlight = HighLight($occurrenceShort, $text);
}
else{
$highlight = substr($text, 0, 300);
}
echo "
[i][...]".$highlight."[...][/i]
";