From: Brion Vibber Date: Tue, 9 Dec 2003 11:39:55 +0000 (+0000) Subject: Quote search text for regexp to avoid some errors with +foo etc X-Git-Tag: 1.3.0beta1~1271 X-Git-Url: http://git.cyclocoop.org/data/%24self?a=commitdiff_plain;h=7286862c594db683fd760806aa6482c4d0749602;p=lhc%2Fweb%2Fwiklou.git Quote search text for regexp to avoid some errors with +foo etc --- diff --git a/includes/SearchEngine.php b/includes/SearchEngine.php index ffffb9bb85..a95dd7fb93 100644 --- a/includes/SearchEngine.php +++ b/includes/SearchEngine.php @@ -310,6 +310,7 @@ class SearchEngine { $cond .= " (MATCH (##field##) AGAINST ('" . wfStrencode( $word ). "'))"; $last = $word; + $word = preg_quote( $word ); array_push( $this->mSearchterms, "\\b" . $word . "\\b" ); } } @@ -335,6 +336,8 @@ class SearchEngine { $q = $this->mUsertext; $qq = wfStrencode( $wgLang->stripForSearch( $q ) ); $this->mSearchterms = preg_split( '/\s+/', $q ); + $this->mSearchterms = array_map( "preg_quote", $this->mSearchterms ); + $this->mTitlecond = " MATCH(si_title) AGAINST('$qq' IN BOOLEAN MODE)"; $this->mTextcond = " (MATCH(si_text) AGAINST('$qq' IN BOOLEAN MODE) AND cur_is_redirect=0)"; } @@ -363,6 +366,7 @@ class SearchEngine { if ( 0 == $contextlines ) { break; } --$contextlines; ++$lineno; + wfDebug( "Search highlight pattern is '$pat1'\n" ); if ( ! preg_match( $pat1, $line, $m ) ) { continue; } $pre = $m[1];