Instagram API非方形图像未返回$ data-> images-> standard_resolution

时间:2016-11-10 21:22:34

标签: php regex api instagram pcre

API网址: api.instagram.com/v1/users/self/media/recent/?access_token=kablenghe

我正在试图找出一种方法来获取标准分辨率图像的图像网址,但Instagram会继续提供裁剪后的图像。

裁剪图片网址:

scontent.cdninstagram.com/t51.2885-15/s480x480/e35/c236.0.607.607/14474173_314142642294695_7071485231332589568_n.jpg?ig_cache_key=blah

非裁剪图片网址:

scontent.cdninstagram.com/t51.2885-15/s480x480/e35/14474173_314142642294695_7071485231332589568_n.jpg?ig_cache_key=splerf

所以我需要删除部分:“/ c236.0.607.607”这是Instagram用来定位和调整图像裁剪的大小。有几个人在问这个问题,但是我没有找到任何人找到解决这个令人烦恼的Instagram API问题的答案,包括裁剪图像和非方形媒体。

3 个答案:

答案 0 :(得分:1)

好的,所以我想我可能已经弄明白了。这就是我所拥有的:

// The standard_resolution URL from Instagram API Response
$full_res_cropped = $item['images']['standard_resolution']['url'];

// Regex Pattern        
$pattern = '#\/c+(.\d[0-9]+\.\d.)+(\d)#';

// Replace with empty string
$replacement = '';

// preg_replace
$full_res = preg_replace($pattern, $replacement, $full_res_cropped);

结果如下:

// $full_res_cropped cropped image URL (original)
scontent.cdninstagram.com/t51.2885-15/s480x480/e35/c236.0.607.607/14474173_314142642294695_7071485231332589568_n.jpg?ig_cache_key=flarg

// $full_res resized, non-cropped URL (fixed)
scontent.cdninstagram.com/t51.2885-15/s480x480/e35/14474173_314142642294695_7071485231332589568_n.jpg?ig_cache_key=flarg

这将一直有效,直到Instagram改变他们裁剪和定位图像的方式并改变URL结构,但直到那时。很酷,我猜。

希望这有助于其他人遇到类似的问题!

答案 1 :(得分:1)

为什么不在客户端设置中选中非方形媒体的复选框: enter image description here

答案 2 :(得分:0)

您可以使用以下正则表达式:

'~/c\d{1,4}(?:\.\d{1,4}){3}/~'

请参阅regex demo

<强>详情:

  • / - 斜线
  • c - 文字c字符
  • \d{1,4} - 1到4位
  • (?:\.\d{1,4}){3} - 3个序列
    • \. - 一个点
    • \d{1,4} - 1到4位
  • / - 一个斜杠(如果你从模式中删除它,正则表达式可能匹配另一个URL子部分的一部分,但是如果你这样做,则需要用空字符串替换)

PHP demo

$re = '~/c\d{1,4}(?:\.\d{1,4}){3}/~';
$str = 'scontent.cdninstagram.com/t51.2885-15/s480x480/e35/c236.0.607.607/14474173_314142642294695_7071485231332589568_n.jpg?ig_cache_key=blah';
$result = preg_replace($re, '/', $str);
echo $result;