自作の日記プログラムに独自タグみたいな機能を作っているところです。

例
[url]http://2ch.net[/url] -> <a href="http://2ch.net">http://2ch.net<;/a>

ところが、

[search]ほげほげ[/search] -> <a href="./search.php?q=(エンコードされたほげほげ)">ほげほげ</a>

というのをやろうとして、

$text = preg_replace("/\[search\](.+?)\[\/search\]/i", "<a href=\"./search.php?q=".urlencode(\\1)."\">\\1</a>", $text);

とやってもうまく行きません。
urlencodeの部分を、urlencode("\\1")とかurlencode(${1})とか試してみたのですが、ダメでした。
preg_replaceの置換後のテキストの部分で関数は使えないのでしょうか?