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 如何在炒股软件中,爬到我想看的日k线
  • ¥15 51单片机中C语言怎么做到下面类似的功能的函数(相关搜索:c语言)
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序
  • ¥15 多址通信方式的抗噪声性能和系统容量对比
  • ¥15 winform的chart曲线生成时有凸起