我基本上想要的是用百分比替换所有数字和/或数字,但是使用匹配来包装在类中。我不想用javascript做这件事。
所以这是我的字符串;
$string = 'Call a group of 8 Shadow Beasts to plummet from the sky at a targeted location dealing 3200% total weapon damage over 5 seconds and stunning enemies hit for 2 seconds.'
这是我想要实现的一个例子;
$string = 'Call a group of <span class="d3-color-green">8</span> Shadow Beasts to plummet from the sky at a targeted location dealing <span class="d3-color-green">3200%</span> total weapon damage over <span class="d3-color-green">5</span> seconds and stunning enemies hit for <span class="d3-color-green">2</span> seconds.'
这就是我试图这样做的方式;
preg_replace("/[0-9]*%/", '<span class="d3-text-green">$1</span>', $string);
唯一的问题是,这会删除数字和百分比,并将其替换为类。我是以正确的方式还是完全离开?
答案 0 :(得分:2)
使用捕获组:
preg_replace("/([0-9]+%)/", '<span class="d3-text-green">$1</span>', $string);
// ___^ ___^
答案 1 :(得分:2)
您没有捕获号码。要捕获特定部分,可以将正则表达式放在圆括号或圆括号内。可以使用反向引用来引用捕获的值。例如,可以使用$1
获得第一捕获组匹配的部分。
preg_replace("/([0-9]+%?)/", '<span class="d3-text-green">$1</span>', $string);
<强>解释强>
/
- 开始分隔符([0-9]+)
- 匹配(并捕获)0到9之间的任何数字,一次或多次%?
- 匹配文字%
字符,可选 /
- 结束分隔符