仅用百分比代替数字和/或数字


Preg Replace only numbers and/or numbers with percentages

我基本上想要的是用百分比替换所有数字和/或数字,但使用匹配来包装在一个类中。我不想在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);
//          ___^    ___^