PHP preg_replace数字反向引用不起作用

时间:2015-12-15 19:55:32

标签: php html preg-replace

我正在尝试将数字包装在<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匹配的数字作为反向引用?

1 个答案:

答案 0 :(得分:2)

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

其次 - 未包含在()中的项目不会因regexp而存储。但full regexp存储在$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>