PHP没有来自preg_replace的输出

ben*_*e89 -2 php regex preg-replace

我正在使用preg_replace()如下代码中所示.

$p = preg_replace('/#[\d\w]+/', '<a href="http://'.$_SERVER['HTTP_HOST'].'/search/term:'.str_replace('#', rawurlencode('%23'), '${1}').'">${1}</a>', $p);
$p will be a string like '(#ben)'
Run Code Online (Sandbox Code Playgroud)

但是,没有输出任何内容$1.我使用$1不正确吗?

应该输出这个: <h2>Bens (<a href="http://example.com/search/term:#ben">ben</a>) cat</h2>

nic*_*ckb 6

您需要一个捕获组来引用反向引用$1:

preg_replace('/(#[\d\w]+)/', ... 
               ^        ^
Run Code Online (Sandbox Code Playgroud)

看到它在这个演示中工作.