我在网站上设置了'最新的推文功能。客户现在要求我隐藏@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("<", "<", $tweet);
$tweet = str_replace(">", ">", $tweet);
return $tweet;
}
$twitterFeed = file_get_contents($feed);
echo stripslashes($prefix) . parse_feed($twitterFeed) . stripslashes($suffix);
?>
非常感谢任何帮助。
答案 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
?>