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问题的答案,包括裁剪图像和非方形媒体。
答案 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)
答案 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子部分的一部分,但是如果你这样做,则需要用空字符串替换)$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;