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

报告相同问题?

悬赏问题

  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行