Заменить текст между тегами в верхний регистр в PHP

Хочу сделать текст в верхнем регистре между тегами h2, но почему то следующий код не работает:

<?php
$str = '<h2>Марина</h2> <b>Алёша</b> случайный текст <h2>Наташа</h2> <h2>Катя</h2>';

$str = preg_replace_callback('|<h2>(.+)</h2>|iU', function($matches){
    $upper = strtoupper($matches[1]);
    return '<h2>'. $upper .'</h2>';
}, $str);

echo $str;

Ответы (1 шт):

Автор решения: MyNameIsKitsune

Замени <h2>(.+)</h2> на <h2>(.*?)<\/h2>

→ Ссылка