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