PHP preg_replace数字后引用不起作用


PHP preg_replace numeric backreference not working

我正在尝试将数字包装在<span>中的给定字符串中。

$datitle = "hey hey 13"

$datitle = preg_replace('/[0-9]/', '<span class="title-number">$1</span>', $datitle);

然而,返回:

hey hey <span class="title-number"></span><span class="title-number"></span>

有两个空的跨度,里面没有数字。

我想要的是:

hey hey <span class="title-number">13</span>

如何使用preg_replace匹配的数字作为背景参考?

首先,/[0-9]/表示One number from 0 to 9。这意味着1适合您的regexp,3适合您的正则表达式。不是13

第二,未封装在()中的项不会作为regexp的结果存储。但full正则表达式存储在$0中。

所以正确的代码是:

$datitle = "hey hey 13";
$datitle = preg_replace('/([0-9]+)/', '<span class="title-number">$1</span>', $datitle);
echo $datitle; // hey hey <span class="title-number">13</span>

或者:

$datitle = "hey hey 13";
$datitle = preg_replace('/[0-9]+/', '<span class="title-number">$0</span>', $datitle);
echo $datitle; // hey hey <span class="title-number">13</span>