我有字符串,想用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>
中搜索关键字(在本例中为:taxes
和more
),以找出要应用的样式。上面的示例字符串应该变成:
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>
的关键字(此处:taxes
和more
)是预定义的,并且可以进行硬编码。
尝试:
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);