我的代码检查twitter墙的前3条消息,并查找名为“code”的字符串。如果它在那里它将回显“代码可用”,如果不是它将回应“无代码”。现在,它为每条消息回复了3次。
如何修改此代码以便仍然检查所有3条消息,但只回显所有墙贴的“无代码”或“可用代码”消息?
function echo_messages($url,$max = 1)
{
$data = json_decode(file_get_contents($url));
$counter = 0;
foreach($data->data as $post)
{
preg_match("/code/", $post->message, $code);
echo '<div id="facebook">';
if (strlen($code[0]) == 0){
echo 'Facebook: No Code';
}else{
echo 'Facebook: Code Available';
}
echo '</div>';
$counter++;
if($counter >= $max)
{
return true;
}
}
}
echo_messages('https://graph.facebook.com/234265435775/posts',3);
答案 0 :(得分:1)
这个怎么样:
function echo_messages($url,$max = 1) {
$data = json_decode(file_get_contents($url));
$counter = 0;
foreach($data->data as $post)
{
preg_match("/code/", $post->message, $code);
if (strlen($code[0])!= 0){
echo '<div id="facebook">Facebook: Code Available</div>';
return;
}
$counter++;
if($counter >= $max) break;
}
echo '<div id="facebook">Facebook: No Code</div>';
}
echo_messages('https://graph.facebook.com/234265435775/posts',3);
它会持续$max
次。一旦找到代码,它就会停止处理并报告。如果它没有找到代码$max
次,或者记录不足 - 它将报告没有找到代码。你要求的唯一不做的就是运行3次,无论它是否在第一条消息中找到代码(但我无法想象你为什么要它做那种不必要的处理!)。
顺便说一句,返回一个表示是否找到代码的true / false会更好,然后在函数外面构造你的消息。
function hasCode($url,$max=1) {/*...*/}
echo "<div id=\"facebook\">Facebook: ".
(hasCode('https://graph.facebook.com/234265435775/posts',3)?
"Code Available":"No Code").
"</div>";
答案 1 :(得分:0)
function echo_messages($url,$max = 1)
{
$data = json_decode (file_get_contents ($url));
$result = 'No Code';
foreach (new LimitIterator (new ArrayIterator ($data->data), 0, $max) as $post)
{
if (preg_match ('/code/i', $post->message))
{
$result = 'Code available';
break;
}
}
printf ('<div id="facebook">Facebook: %s</div>', $result);
}