Re: str_replace on words?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux