Revision: 68997
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at April 2, 2015 02:41 by flatearthcomms
Initial Code
/** * Case in-sensitive array_search() with partial matches * * @param string $needle The string to search for. * @param array $haystack The array to search in. * * @author Bran van der Meer <[email protected]> * @since 29-01-2010 */ function array_find($needle, array $haystack) { foreach ($haystack as $key => $value) { if (false !== stripos($needle, $value)) { return $key; //break; } } return false; } /* Rest of code Flat Earth */ $search = strtoupper($search); $search = strip_tags($search); $search = trim($search); $sql_srch = "SELECT * FROM `pg_pages` WHERE upper(`story`) LIKE'%$search%'"; $result_srch = doSQL($sql_srch); $c_srch=mysql_num_rows($result_srch); for($i_srch=0; $i_srch<$c_srch; $i_srch++) { $r_srch = mysql_fetch_array( $result_srch ); $srchUrl = $r_srch['tier1'].$r_srch['tier2'].$r_srch['tier3'] ; echo '<a href="'.$srchUrl.'">'.$r_srch['title'].'</a>'; $stry = $r_srch['story']; $stry = ereg_replace ( "<h1>(.*)</h1>", "", $stry ); $stry = strip_tags($stry); $stryArray = explode(" ", $stry); $foundPosition = FALSE; $foundPosition = array_search( strtolower($search), array_map('strtolower',$stryArray) ); // * Rare instance where search for 'founded' finds 'co-founded' therefore isn't matched // * So search for fragment of search phrase // * WARNING: means 'found' is found first if it exists, but at least gives result if($foundPosition===FALSE) { $foundPosition = array_find( $search, $stryArray ); $stryWord = '<span class="notfound">' . implode(' ', array_slice($stryArray, $foundPosition, 1) ). '</span>'; } else { $stryWord = '<span class="found">' . implode(' ', array_slice($stryArray, $foundPosition, 1) ). '</span>'; } $extractWords = 11; $startPosition = ($foundPosition-$extractWords > 0)?$extractWords:$foundPosition; $startEllipsis = ($startPosition<$extractWords)?'':'...'; $endPosition = ($foundPosition+1+$extractWords < count($stryArray) )?$extractWords:count($stryArray)-$foundPosition; $endEllipsis = (count($stryArray)-$foundPosition<=$extractWords)?'':'...'; $stryStart = implode(' ', array_slice($stryArray, $foundPosition-$startPosition, $startPosition) ); $stryEnd = implode(' ', array_slice($stryArray, $foundPosition+1, $endPosition) ); //$stryWord = '<span class="found">' . implode(' ', array_slice($stryArray, $foundPosition, 1) ). '</span>'; $fndstry = $startEllipsis. $stryStart .' '. $stryWord .' '. $stryEnd .$endEllipsis; echo "<p>".$fndstry."</p>"; } if ($c_srch == 0) { echo "<p>Sorry, but we can’t find anything that matches your search criteria.</p>"; }
Initial URL
Initial Description
Simple PHP search with whole word extract and highlighted search word
Initial Title
Simple PHP search with whole word extract and highlighted search word
Initial Tags
search
Initial Language
PHP