在instarss中删除<img src=""/>的一部分

时间:2016-07-19 07:05:14

标签: php rss

我正在使用instarss php脚本从Instagram个人资料图片中获取rss。

<?php
if (!isset($_GET['user'])) {
    if (!isset($_GET['hashtag'])) {
        exit('Not a valid RSS feed. You didn\'nt provide an Instagram user or hashtag. Send one via a GET variable. Example .../instarss.php?user=snoopdogg');
    }
}
if (isset($_GET['user']) && isset($_GET['hashtag'])) {
    exit('Don\'t request both user and hashtag. Request one or the other.');
}
if (isset($_GET['user'])) {
    $html = file_get_contents('http://instagram.com/'.$_GET['user'].'/');
}
if (isset($_GET['hashtag'])) {
    $html = file_get_contents('http://instagram.com/explore/tags/'.$_GET['hashtag'].'/');
}
$html = strstr($html, '{"country_code');
$html = strstr($html, '</script>', true);
$html = substr($html, 0, -1);
// for debugging... sigh........
// echo $html;
$data = json_decode($html);
// more debugging... 
// print_r($data->entry_data->ProfilePage[0]->user->media->nodes);
if (isset($_GET['user'])) {
    if ($data->entry_data->ProfilePage[0]->user->media->nodes) {
        $nodes = $data->entry_data->ProfilePage[0]->user->media->nodes;
    } else {
        exit('Looks like this Instagram account is set to private or doesn\'t exist. We can\'t do much about that now, can we?');
    }
}
if (isset($_GET['hashtag'])) {
    $nodes = $data->entry_data->TagPage[0]->tag->media->nodes;
}
header('Content-Type: text/xml; charset=utf-8');
$rss_feed = '<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel>';
if (isset($_GET['user'])) {
    $rss_feed .= '<title>'.$_GET['user'].'\'s Instagram Feed</title><atom:link href="http://'.$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"].'" rel="self" type="application/rss+xml" /><link>http://instagram.com/'.$_GET['user'].'</link><description>'.$_GET['user'].'\'s Instagram Feed</description>';
}
if (isset($_GET['hashtag'])) {
    $rss_feed .= '<title>Photos tagged with: '.$_GET['hashtag'].' on Instagram</title><atom:link href="http://'.$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"].'" rel="self" type="application/rss+xml" /><link>http://instagram.com/explore/tags/'.$_GET['hashtag'].'</link><description>Photos tagged with: '.$_GET['hashtag'].' on Instagram</description>';
}
foreach($nodes as $node) {
    $rss_feed .= '<item><title>';
    if(isset($node->caption) && $node->caption != '') {
        $rss_feed .= htmlspecialchars($node->caption, ENT_QUOTES);
    } else {
        $rss_feed .= 'photo';
    }
    // pubdate format could also be: "D, d M Y H:i:s T"
    $rss_feed .= '</title><link>https://instagram.com/p/'.$node->code.'/</link><pubDate>'.date("r", $node->date).'</pubDate>';
    if (isset($_GET['user'])) {
        $rss_feed .= '<dc:creator><![CDATA['.$_GET['user'].']]></dc:creator>';
    }
    $rss_feed .= '<description><![CDATA[<img src="'.$node->display_src.'" />]]></description><guid>https://instagram.com/p/'.$node->code.'/</guid></item>';
} // foreach "node" (photo)
$rss_feed .= '</channel></rss>';
echo $rss_feed;

&GT;

问题是Instagram为每张照片添加了“?ig_cache_key = *”,而rss Feed中的结果是:

https://scontent.cdninstagram.com/t51.2885-15/e35/13712096_262107487501012_162919037_n.jpg?ig_cache_key=MTI5Njk2NDMzMzg2NzQyMDQ5MA%3D%3D.2

我是PHP的初学者,任何人都可以帮助从“instarss”中的每个图片中删除“?ig_cache_key =”。?

感谢。

2 个答案:

答案 0 :(得分:0)

preg_replace将为您提供帮助。

$link = "htts........";

$link_ok = preg_replace("/?ig_cache_key=(.*?)\"/","",$link );

答案 1 :(得分:0)

感谢Reddit用户blitterobject来解决这个问题。

将其添加到第70行:

$node->display_src = strtok($node->display_src, '?');