Preg_replace仅包含百分比的数字和/或数字

时间:2014-03-20 13:41:14

标签: php preg-replace

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

唯一的问题是,这会删除数字和百分比,并将其替换为类。我是以正确的方式还是完全离开?

2 个答案:

答案 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之间的任何数字,一次或多次
  • %? - 匹配文字%字符,可选
  • / - 结束分隔符