From d6ec36fed7a828965844d8b74568c41bdc5f307b Mon Sep 17 00:00:00 2001 From: saxmatt Date: Mon, 12 Jan 2004 00:59:21 +0000 Subject: [PATCH] Search hilite changes from Ryan Boren git-svn-id: http://svn.automattic.com/wordpress/trunk@754 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/functions.php | 61 +++++++++++++++++++++++++++++++++++---- 1 file changed, 56 insertions(+), 5 deletions(-) diff --git a/wp-includes/functions.php b/wp-includes/functions.php index b22ec82fc..51de04e34 100644 --- a/wp-includes/functions.php +++ b/wp-includes/functions.php @@ -1663,6 +1663,7 @@ function add_filter($tag, $function_to_add) { /* Highlighting code c/o Ryan Boren */ function get_search_query_terms($engine = 'google') { + global $s, $s_array; $referer = urldecode($_SERVER[HTTP_REFERER]); $query_array = array(); switch ($engine) { @@ -1670,34 +1671,84 @@ function get_search_query_terms($engine = 'google') { // Google query parsing code adapted from Dean Allen's // Google Hilite 0.3. http://textism.com $query_terms = preg_replace('/^.*q=([^&]+)&?.*$/i','$1', $referer); - $query_terms = preg_replace('/\'|"/','', $query_terms); + $query_terms = preg_replace('/\'|"/', '', $query_terms); $query_array = preg_split ("/[\s,\+\.]+/", $query_terms); break; + + case 'lycos': + $query_terms = preg_replace('/^.*query=([^&]+)&?.*$/i','$1', $referer); + $query_terms = preg_replace('/\'|"/', '', $query_terms); + $query_array = preg_split ("/[\s,\+\.]+/", $query_terms); + break; + + case 'yahoo': + $query_terms = preg_replace('/^.*p=([^&]+)&?.*$/i','$1', $referer); + $query_terms = preg_replace('/\'|"/', '', $query_terms); + $query_array = preg_split ("/[\s,\+\.]+/", $query_terms); + break; + + case 'wordpress': + // Check the search form vars if the search terms + // aren't in the referer. + if ( ! preg_match('/^.*s=/i', $referer)) { + if (isset($s_array)) { + $query_array = $s_array; + } else if (isset($s)) { + $query_array = array($s); + } + + break; + } + + $query_terms = preg_replace('/^.*s=([^&]+)&?.*$/i','$1', $referer); + $query_terms = preg_replace('/\'|"/', '', $query_terms); + $query_array = preg_split ("/[\s,\+\.]+/", $query_terms); + break; } return $query_array; } function is_referer_search_engine($engine = 'google') { - $referer = urldecode($_SERVER[HTTP_REFERER]); + global $siteurl; + $referer = urldecode($_SERVER[HTTP_REFERER]); + //echo "referer is: $referer
"; if ( ! $engine ) { return 0; } switch ($engine) { case 'google': - if (preg_match('|^http://(www)?\.?google\.*|i',$referer)) { + if (preg_match('/^http:\/\/w?w?w?\.?google.*/i', $referer)) { return 1; } break; + + case 'lycos': + if (preg_match('/^http:\/\/search\.lycos.*/i', $referer)) { + return 1; + } + break; + + case 'yahoo': + if (preg_match('/^http:\/\/search\.yahoo.*/i', $referer)) { + return 1; + } + break; + + case 'wordpress': + if (preg_match("#^$siteurl#i", $referer)) { + return 1; + } + break; } return 0; } function hilite($text) { - $search_engines = array('google'); + $search_engines = array('wordpress', 'google', 'lycos', 'yahoo'); foreach ($search_engines as $engine) { if ( is_referer_search_engine($engine) ) { @@ -1709,7 +1760,7 @@ function hilite($text) { $text = preg_replace('/(?<=>)([^<]+)?(\b'.$term.'\b)/i','$1$2',$text); } } - break; + break; } }