| 
	
 | 
 Posted by Rory Browne on 06/08/05 16:51 
On 6/8/05, John Nichel <john@kegworks.com> wrote: 
> Rory Browne wrote: 
> > On 6/8/05, David Duong <david@forizon.org> wrote: 
> > 
> >>Sebastian wrote: 
> >> 
> >>>i'm looking for a function that can highlight certain search terms in a 
> >>>string. anyone have something already made that i can plugin to my 
> >>>exisiting code? 
> >>> 
> >>>I found a couple but they do not work very well.. some break html code 
> >>>if the string contains the keywords in the html. 
> >>> 
> >>>thanks. 
> >> 
> >>You can use str_replace to "highlight" the search terms. 
> >> 
> >>For example, you could use the following code for each search term (this 
> >>function also accepts arrays, see http://php.net/str_replace): 
> >> 
> >>str_replace ($search_term, "<b>$search_term</b>", $body_text); 
> > 
> > 
> > Bad idea. Very bad idea. 
> > 
> > for example ( using bold to highlight ): 
> > <?pseudo_code 
> > 
> > $html = "<html><body>I want to hightlight the word body in this text. 
> > </body></html>"; 
> > $search = "body"; 
> > 
> > $output = str_replace($search, "<b>$search</b>", $html); 
> > // $output == "<html><<b>body</b>>I want to hightlight the word 
> > <b>body</b> in this text. </<b>body</b>></html>"; 
> > 
> > // see what I mean? 
> > ?> 
>  
> Good catch Rory.  A regex replace would work better here. 
>  
> $search = "body"; 
> $find = "/\b" . $search . "\b/"; 
> preg_replace ( $find, "<b>" . $search . "</b>", $html ); 
 
I don't think so. If I'm reading your code correctly you still have 
the same problem, as I outlined above. There is no simple solution to 
this. It either involves advanced regex(more advanced than my 
understanding of it), or a proper parser. 
 
<?pseudo_code 
 
function highlight_html_string($needle, $haystack); 
 
$retval = ""; 
$i = 0; 
while($i < strlen($haystack)){ 
  $str = get_text_between_certain_point_and_first_instance_of_<($i);  
  $str = preg_replace(what john said above); 
  $str .= get_tag_text($i); 
  $retval .= $str; 
  $i += strlen($str); 
} 
 
return $retval; 
?> 
 
>  
> -- 
> John C. Nichel 
> ÜberGeek 
> KegWorks.com 
> 716.856.9675 
> john@kegworks.com 
>  
> -- 
> PHP General Mailing List (http://www.php.net/) 
> To unsubscribe, visit: http://www.php.net/unsub.php 
>  
>
 
[Back to original message] 
 |