带有通配符的PHP str_replace


PHP str_replace with wild card?

我知道如何将str_replace用于简单的任务,比如。。。

$Header = str_replace('<h2>Animals</h2>', '<h3>Animals</h3>', $Header);

但是想象一下,一篇存储在数据库中的文章包含以下标题:

<h3>Animals</h3>
<h3>Plants</h3>

你想把它们改成这样:

<h3><span class="One">Animals</span></h3>
<h3><span class="One">Plants</span></h3>

有没有办法把标签(如动物、植物、矿物等)之间的价值变成一张外卡,比如这样的?:

$Title = str_replace('<h3>*</h3>', '<h3><span style="One">*</span></h3>', $Title);

或者我应该问"最好的方法是什么?"看起来有很多方法可以做到这一点,但在开始使用正则表达式之前,我想尝试找到一个简单的PHP解决方案。

您可以使用主注释中建议的str_replace()技术,但我认为使用正则表达式的preg_replace()是通配符替换的最佳实践。

<?php
$str = <<<EOD
<h3>Animals</h3>
<h3>Plants</h3>
EOD;
$str = preg_replace('/<h3>(.*?)<'/h3>/', '<h3><span class="One">$1</span></h3>', $str);
echo $str;