我正在尝试将数字包装在<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 :(得分: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>