You are here: Re: [PHP] Re: string highlight « PHP « IT news, forums, messages
Re: [PHP] Re: string highlight

Posted by Jochem Maas on 06/08/05 16:59

Rory Browne wrote:
> 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

John is using \b in his regexp to denote a word boundary - I don't believe
< counts as a boundary char therefore niether '<body>' or '<body bla="bla">'
would be preg_replace()'d

> 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
>>
>>
>
>

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация