<?phpclass SearchEngine { public function doSearch($searchString) { include "config.php"; // CONNECT TO DB $db_query = mysql_connect($db_host, $db_user, $db_password) or die('Could not connect: ' . mysql_error()); mysql_select_db($db_name) or die('Could not select database'); $pSearchString = mysql_real_escape_string( $searchString, $db_query ); $result = mysql_query("SELECT id, paste_raw, MATCH (paste_raw) AGAINST ('$pSearchString') AS score FROM pastes WHERE MATCH (paste_raw) AGAINST ('$pSearchString') ORDER BY score DESC"); $output = array(); while ($row = mysql_fetch_array($result)) { // RENDER HTML PARTS INTO CHARACTERS (SECURITY) $raw_output = htmlspecialchars($row['paste_raw'],ENT_NOQUOTES,'UTF-8'); // GET THE POSITION OF THE SEARCH STRING INSIDE THE DB RESULT $charsToShow = 400; $position = mb_stripos($raw_output, $searchString,0,'UTF-8'); $middle = ($charsToShow / 2) + (strlen ( $pSearchString)/2); if ($position<$middle) { $initPos = 1; } else { $initPos = $position - $middle; } $short_result = substr($raw_output,$initPos,400); $row_array = array ( 'id' => $row['id'], 'paste_raw' => '...'.str_ireplace($searchString, '<span class="highlight">'.$searchString.'</span>', $short_result).'...', 'score' => round($row['score'],2) ); array_push ( $output, $row_array); } return $output; }}?>