隐藏'最新推文'中的@mentions

时间:2012-04-27 15:36:31

标签: php javascript twitter

我在网站上设置了'最新的推文功能。客户现在要求我隐藏@mentions以阻止它们作为“最新推文”出现。我已经看过Twitter API,但说实话,我对此知之甚少,因此无法真正了解如何做到这一点。或者即使有可能。

我用来调用'最新推文'的代码是

<?php
            // Your twitter username.
            $username = "****";

            // Prefix - some text you want displayed before your latest tweet.
            // (HTML is OK, but be sure to escape quotes with backslashes: for example href=\"link.html\")
            $prefix = "";

            // Suffix - some text you want display after your latest tweet. (Same rules as the prefix.)
            $suffix = "";

            $feed = "http://search.twitter.com/search.atom?q=from:" . $username . "&rpp=1";

            function parse_feed($feed) {
                $stepOne = explode("<content type=\"html\">", $feed);
                $stepTwo = explode("</content>", $stepOne[1]);
                $tweet = $stepTwo[0];
                $tweet = str_replace("&lt;", "<", $tweet);
                $tweet = str_replace("&gt;", ">", $tweet);
                return $tweet;
            }

            $twitterFeed = file_get_contents($feed);
            echo stripslashes($prefix) . parse_feed($twitterFeed) . stripslashes($suffix);
        ?>​

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

尝试,改变你的回归:

if(!preg_match("/@(\w+)/", $tweet))
{
    return $tweet;
}
else
{
    return "";
}

答案 1 :(得分:0)

好像你想要获得用户最新的推文,然后过滤掉@。我会避免使用搜索调用,而是专注于timeline call

这些字段

附加到通话中的每个项目
 "in_reply_to_status_id": null,
 "in_reply_to_status_id_str": null,
 "in_reply_to_user_id": null,
 "in_reply_to_user_id_str": null,
 "in_reply_to_screen_name": null,

"in_reply_to_status_id""in_reply_to_status_id_str"可能会保留null,但仍可能是@回复。你要找的是"in_reply_to_screen_name"。如果它填写了一个名字,那就是@回复。

拨打电话时,只需忽略in_reply_to_screen_name != null

所在的项目

查看developer console以及您可以测试,混合和放大的位置。匹配。

- PHP中的示例代码☟

<?php
$json = file_get_contents("http://twitter.com/status/user_timeline/twitterapi.json", true); 
$decode = json_decode($json, true); //PHP Array output from twitter JSON

$valid = array();
$count = count($decode); //counting the number of status
for($i=0;$i<$count;$i++){
    if(!$decode[$i]['in_reply_to_screen_name']){
        array_push($valid, $decode[$i]); 
    }
};

print_r($valid); //tweets that are not @ replies
?>