我使用开源twitter.class.php在Twitter上查询/搜索特定术语。
我不想回应一切。我想将输出保存到数据库。
如何替换echo并将每条记录保存到数据库?
我不知道如何打破getTweets($ termt,100);
100让它一次得到100条推文。
require('twitter.class.php');
$twitter = new twitter_class();
echo $twitter->getTweets($termt, 100);
注意:我不知道如何使用数组。请帮帮我。
谢谢。
这是我的Twitter.class.php
function twitter_class()
{
$this->realNamePattern = '/\((.*?)\)/';
$this->searchURL = 'http://search.twitter.com/search.atom?rpp=500&lang=en&q=';
$this->intervalNames = array('second', 'minute', 'hour', 'day', 'week', 'month', 'year');
$this->intervalSeconds = array( 1, 60, 3600, 86400, 604800, 2630880, 31570560);
$this->badWords = array('somebadword', 'anotherbadword');
}
function getTweets($q, $limit=500)
{
$output = '';
// get the seach result
$ch= curl_init($this->searchURL . urlencode($q));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
$response = curl_exec($ch);
if ($response !== FALSE)
{
$xml = simplexml_load_string($response);
$output = '';
$tweets = 0;
for($i=0; $i<count($xml->entry); $i++)
{
$crtEntry = $xml->entry[$i];
$account = $crtEntry->author->uri;
$image = $crtEntry->link[1]->attributes()->href;
$tweet = $crtEntry->content;
// skip tweets containing banned words
$foundBadWord = false;
foreach ($this->badWords as $badWord)
{
if(stristr($tweet, $badWord) !== FALSE)
{
$foundBadWord = true;
break;
}
}
$tweet = str_replace('<a href=', '<a target="_blank" href=', $tweet);
// skip this tweet containing a banned word
if ($foundBadWord)
continue;
// don't process any more tweets if at the limit
if ($tweets==$limit)
break;
$tweets++;
// name is in this format "acountname (Real Name)"
preg_match($this->realNamePattern, $crtEntry->author->name, $matches);
$name = $matches[1];
// get the time passed between now and the time of tweet, don't allow for negative
// (future) values that may have occured if server time is wrong
$time = 'just now';
$secondsPassed = time() - strtotime($crtEntry->published);
if ($secondsPassed>0)
{
// see what interval are we in
for($j = count($this->intervalSeconds)-1; ($j >= 0); $j--)
{
$crtIntervalName = $this->intervalNames[$j];
$crtInterval = $this->intervalSeconds[$j];
if ($secondsPassed >= $crtInterval)
{
$value = floor($secondsPassed / $crtInterval);
if ($value > 1)
$crtIntervalName .= 's';
$time = $value . ' ' . $crtIntervalName . ' ago';
break;
}
}
}
$output .= '
<div class="tweet">
<div class="avatar">
<a href="' . $account . '" target="_blank"><img src="' . $image .'"></a>
</div>
<div class="message">
<span class="author"><a href="' . $account . '" target="_blank">' . $name . '</a></span>: ' .
$tweet .
'<span class="time"> - ' . $time . '</span>
</div>
</div>';
}
}
else
$output = '<div class="tweet"><span class="error">' . curl_error($ch) . '</span></div>';
curl_close($ch);
return $output;
}
}
答案 0 :(得分:0)
你需要解析该函数的输出,使用循环和DOM库,更具体地说是推文本身,它嵌套在几个div / spans中。
然后,您可以为循环的每次迭代执行INSERT INTO语句。