instagram preg_replace获取预览

i made this code to change the instagram embed to a preview image

$strings     = array('https://instagram.com/p/BanWWFtBz6O', 'BanWWFtBz6O');
$searchs     = array('/instagram\.com\/p\/([a-zA-Z0-9]+)/', '/([a-zA-Z0-9]+)/');
$replaces    = array('instagram.com/p/$1/media/?size=l', 'https://instagram.com/p/$1/media/?size=l');    
$soc_instagram = preg_replace($searchs,$replaces,$strings); 

but i have a problem with that code, first when i try to put the first value in $strings https://instagram.com/p/BanWWFtBz6O it change to https://instagram.com/p/BanWWFtBz6O/media/?size=l that should be ok

the problem when i try to put second value from $strings BanWWFtBz6O (only the ID of instagram post) it change to

https://instagram.com/p/https/media/?size=l://https://instagram.com/p/instagram/media/?size=l.https://instagram.com/p/com/media/?size=l/https://instagram.com/p/p/media/?size=l/https://instagram.com/p/BaQsAubg6H3/media/?size=l/https://instagram.com/p/media/media/?size=l/?https://instagram.com/p/size/media/?size=l=https://instagram.com/p/l/media/?size=l

did i miss something? please help

==================================================================== how about youtube code?

$string     = array('https://www.youtube.com/watch?v=QTrPMYYGam8', 'QTrPMYYGam8');
$search     = array('/www.youtube\.com\/watch\?v=([a-zA-Z0-9_\-+?:]+)/', '/([a-zA-Z0-9_\-+?:]+)/');
$replace    = array('i.ytimg.com/vi/$1/hqdefault.jpg', 'https://i.ytimg.com/vi/$1/hqdefault.jpg');    
$soc_youtube = preg_replace($search,$replace,$string);

A single replace will work:

$strings     = array('https://instagram.com/p/BanWWFtBz6O', 'BanWWFtBz6O');
$searchs     = array('~(?:https://instagram\.com/p/)?([a-zA-Z0-9]+)~');
$replaces    = array('https://instagram.com/p/$1/media/?size=l');    
$soc_instagram = preg_replace($searchs,$replaces,$strings); 

print_r($soc_instagram);

Output:

Array
(
    [0] => https://instagram.com/p/BanWWFtBz6O/media/?size=l
    [1] => https://instagram.com/p/BanWWFtBz6O/media/?size=l
)

for youtube use the same method:

$string     = array('https://www.youtube.com/watch?v=QTrPMYYGam8', 'QTrPMYYGam8');
$search     = array('~(?:https://www.youtube\.com/watch\?v=)?([a-zA-Z0-9_\-+?:]+)~');
$replace    = array('https://i.ytimg.com/vi/$1/hqdefault.jpg');    
$soc_youtube = preg_replace($search,$replace,$string);