PHP str_replace с 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;