duanhuang7591 2017-10-24 11:46
浏览 49
已采纳

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);
  • 写回答

1条回答 默认 最新

  • douwan7382 2017-10-24 12:03
    关注

    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);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀