Re: str_replace on words?

From: Date: Thu, 12 May 2005 06:20:55 +0000
Subject: Re: str_replace on words?
References: 1 2  Groups: php.general 
Request: Send a blank email to php-general+get-215016@lists.php.net to get a copy of this message
Duncan Hill wrote:
On Wednesday 11 May 2005 17:13, Merlin wrote:
Hi there, I am trying to strip some words from a sentence. I tried it with str_replace like described here: http://www.totallyphp.co.uk/code/find_and_replace_words_in_a_text_string_us ing_str_replace.htm Unfortunatelly it does not work the way I want, because if I want to replace the word "in" all passages containing the characters "in" are replaced. For example Singapore.
You need to tokenize your input and do exact matching. Alternately, preg_match / preg_replace may work with \b to specify word boundries.
Hi Duncan, that in fact was the key and only way to get a proper result. I found this script on the preg_replace page of php.net: // Function highlights $words in $str function highlight_words($str, $words) { if(is_array($words)) { foreach($words as $k => $word) {
     $pattern[$k] = "/\b($word)\b/is";
     $replace[$k] = '<b>\\1</b>';
} } else { $pattern = "/\b($words)\b/is"; $replace = '<b>\\1</b>'; } return preg_replace($pattern,$replace,$str); } Which works excellent! Thanx, Merlin

« previous php.general (#215016) next »