如何在PHP中使用特定的模式解析字符串?(添加一些样式标记)


How to parse a String, using a certain pattern, in PHP? (to add some style-tags)

我有字符串,想用PHP解析它们,插入一些合适的样式标记。

字符串示例(不要要求有意义):

Lorem Ipsum 1.39 (+10% Taxes) Dolor Sit Amet 500 (+50% More) Lorem Ipsum 1.99 (+20% Stupid Taxes) and one more number 123 (+10/20/30% Taxes) Period.

在这个例子中,我总是想找到图案为(+<number> <text>)的零件,并将其包装到<span>-标签中进行样式设置。我想在<text>中搜索关键字(在本例中为:taxesmore),以找出要应用的样式。上面的示例字符串应该变成:

Lorem Ipsum 1.39 <span class="taxes">(+10% Taxes)</span> Dolor Sit Amet 500 <span clas="more">(+50% More)</span> Lorem Ipsum 1.99 <span class="taxes">(+20% Stupid Taxes)</span> and one more number 123 <span class="taxes">(+10/20/30% Taxes)</span> Period.

最好的方法是什么?我不确定preg_replace()是否能做到这一点(regex是否是最好的方法)。<text>的关键字(此处:taxesmore)是预定义的,并且可以进行硬编码。

尝试:

preg_replace_callback('/'('+['/'d]+% ([^)]+)')/', function($matches) {
  // Make a valid class identifier
  $class = str_replace(' ', '-', strtolower($matches[1]));
  // Wrap everything in a <span>
  return "<span class='$class'>{$matches[0]}</span>";
}, $string);