DreaMYs adlı üyeden alıntı: mesajı görüntüle
Evet çok karışık ve imkansız gibi geliyor regex.
Bu regexi kullandığımda.

$data = preg_replace_callback('/(?:http(?:s)?://)?(?:www.)?(?:m.)?instagram.com(?:/p/)([a-zA-Z0-9_-]+)(?:/?)(?:?utm_source=ig_web_copy_link)?/', function($matches) {

bu seferde istediğim gibi

<figure class="media">
<oembed url=""></oembed>
</figure>'

Bu kısımları silemiyorum.
$var = preg_replace_callback('/<figure\s*class="media">\s*<oembed\s*url="((?:http(?:s)?:\/\/)?(?:www\.)?(?:m\.)?instagram\.com(?:\/p\/)([a-zA-Z0-9_-]+)(?:\/?)(?:\?utm_source=ig_web_copy_link)?)"><\/oembed>\s*<\/figure>/', function($matches) {
    return $matches[1];
}, $text);
O zaman böyle olacak.