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

如何在PHP中使用特定模式解析字符串?(添加一些样式标记的步骤),php,Php,我有字符串,想用PHP解析它们以插入一些适当的样式标记 示例字符串(不要求有意义): Lorem Ipsum 1.39(+10%税)Dolor Sit Amet 500(+50%以上)Lorem Ipsum 1.99(+20%愚蠢税)和一个以上的数字123(+10/20/30%税)期间。 在本例中,我始终希望找到具有模式(+)的零件,并将其包装到-标记中以进行样式设置。我想在中搜索关键字(在本例中:taxes和more),以找出要应用的样式。上面的示例字符串应为: Lorem Ipsum 1.3

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

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

Lorem Ipsum 1.39(+10%税)Dolor Sit Amet 500(+50%以上)Lorem Ipsum 1.99(+20%愚蠢税)和一个以上的数字123(+10/20/30%税)期间。

在本例中,我始终希望找到具有模式
(+)
的零件,并将其包装到
-标记中以进行样式设置。我想在
中搜索关键字(在本例中:
taxes
more
),以找出要应用的样式。上面的示例字符串应为:

Lorem Ipsum 1.39(+10%税)Dolor Sit Amet 500(+50%以上)Lorem Ipsum 1.99(+20%愚蠢税)和一个以上的数字123(+10/20/30%税)期间。

最好的方法是什么?我不确定
preg\u replace()
是否可以做到这一点(如果正则表达式是最好的方法,也不确定)。
(此处:
税收
更多
)的关键字是预定义的,可以硬编码。

尝试:

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);
preg\u replace\u回调('/\(\+[\/\d]+%([^]+)\)/',函数($matches){
//创建有效的类标识符
$class=str_replace(“”,“-”,strtolower($matches[1]);
//把所有的东西都包起来
返回“{$matches[0]}”;
},$string);

这几乎就是我想要的。以您的代码为例,现在我想在
$class
中搜索某些关键字,然后应用适当的span类,但这只需使用
strpos()
即可。感谢您对正则表达式和非常有用的回调函数的帮助!