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 $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']); PHP:
Try This: $this->post['message'] = preg_replace($exp, $rplc, $this->post['message'], 1); // I just added "1" in last. It will effect on first match Code (markup):