我基本上想要的是用百分比替换所有数字和/或数字,但使用匹配来包装在一个类中。我不想在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);
唯一的问题是,这删除了数字和百分比,并将其替换为类。我是走对了还是完全走错了?
您没有捕获数字。要捕获特定部分,可以将正则表达式放在圆括号或圆括号内。可以使用反向引用引用捕获的值。例如,可以使用$1
获取第一个捕获组匹配的部分。
preg_replace("/([0-9]+%?)/", '<span class="d3-text-green">$1</span>', $string);
解释:
-
/
-起始分隔符 -
([0-9]+)
-匹配(并捕获)0 - 9中的任何数字,一次或多次 -
%?
-匹配文字%
字符,可选 -
/
-结束分隔符
使用一个捕获组:
preg_replace("/([0-9]+%)/", '<span class="d3-text-green">$1</span>', $string);
// ___^ ___^