How to make replacement, only replacing once

1 replies
Hi guys, below are custom code to replacing text into link, for example

Google text, will be like this Google
Yahoo text, will be like this Yahoo

the replacement mod below are working well until now

now i just need a little fix again, to make it better again
i need it now only replacing once, so not too many links if the text appear few times

please share your knowledge guys, how to do that





PHP Code:
$words = array(
    
'Google' => 'http://www.google.com',
    
'Yahoo' => 'http://www.yahoo.com'
);

$exp = array();
$rplc = array();
foreach (
$words as $word => $url)
{
    
$exp[] = '/ ' preg_quote($word) . ' /i';
    
$rplc[] = ' <argh href="' $url '">' $word '</argh> ';
}

    
$this->post['message'] = preg_replace($exp$rplc$this->post['message']);
    
$this->post['message'] = preg_replace_callback("#(<a [^>]*>)((?:[^<]|<(?!/?a>)|(?R))+)(</a>)#"create_function('$a''return $a[1] . preg_replace("#<argh[^>]*>(.*?)</argh>#", "$1", $a[2]) . $a[3];'), $this->post['message']);
    
$this->post['message'] = preg_replace(array('#<argh #''#</argh>#'), array('<a ''</a>'), $this->post['message']); 
#make #replacement #replacing
  • Profile picture of the author unnatural
    preg_replace has a limit paramater - PHP: preg_replace - Manual

    By default the limit is set to -1 (infinite), so just set the limit to 1 and your set.

    preg_replace(pattern, replacement, subject, limit, count)

    Or alternatively you can break out of your foreach loop after one iteration.

    Just use "break" or increment a counter if you want to set a custom limit.

    Ryan
    {{ DiscussionBoard.errors[4551760].message }}

Trending Topics