Consider the following string: $MRK - Merck - ($AAPL, $MSFT, $F) having day $AA! like $P and me :) Although it's jibberish, it shows my problem. I want to scan for all words starting with a dollar-sign ($) and check them against a pre-defined list of tickers. If there's a match, replace them with a label ({TICKER}), as follows: {TICKER} - Merck - ({TICKER}, {TICKER},{TICKER}) having a day {TICKER}! like {TICKER} an me :) I now use this function: function _process_tickers($string) { $result = db_query("SELECT symbol FROM us_stocks"); while ($row = db_fetch_object($result)) { $tickers[] = ' $' . $row->symbol . ' '; } return str_replace($tickers, ' {TICKER} ', $tweet); } Problem: this only catches tickers that are surrounded by spaces (this $AA is surrounded by spaces) but not other situations like (this ticker has only a space in in front $AA) or (this one is surrounded by commas: my,$AA, ticker). But also two tickers right...