0

我正在循环浏览 Twitter 提要,我的代码中的所有内容都运行良好,但我正在为一件事而苦苦挣扎。底部的 if 语句返回所有日期为今天的消息。然后基于此,我有一个正在尝试测试的正则表达式模式。如果找到,我说“找到它”,如果没有,我说“未找到”。我需要帮助的是未找到的部分。而不是为每条消息声明“未找到”,我该如何制作它以便循环遍历消息,如果找到状态“找到它”并停止一切,但如果未找到则传递消息,然后一旦所有循环完成完成状态“未找到”只有一次。

$dom = new DOMDocument();
@$dom->loadHTMLFile('http://api.twitter.com/1/statuses/user_timeline.rss?screen_name=google');
$xml = simplexml_import_dom($dom);
$twitter = $xml->xpath("//item");

foreach ($twitter as $item) {
    $timezone = new DateTimeZone('America/Los_Angeles');
    $date = new DateTime($item->pubdate);
    $date->setTimeZone($timezone);
    $twitter_date = $date->format("F j Y");
    $todays_date = date("F j Y");

    if ($twitter_date == $todays_date) {
        $text = $item->title;
        $pattern = '/\s\d\s\d/i';
        if (preg_match($pattern, $text, $codes)) {
            if (isset($codes[0])) {
                echo 'found it!';
            }
        } else {
            echo 'not found';
        }
    }
}
4

1 回答 1

0

您可以保留一个标志变量$found来跟踪是否找到它,然后在找到break时退出循环。然后在你的foreach循环之后,检查$found.

$found = false;
foreach ($twitter as $item) {
    // ...
    if ($twitter_date == $todays_date) {
        $text = $item->title;
        $pattern = '/\s\d\s\d/i';
        if (preg_match($pattern, $text, $codes)) {
            if (isset($codes[0])) {
                $found = true;
                echo 'found it!';
                break;
            } 
        }
    }
}
if (!$found) {
    echo 'not found';
}
于 2012-06-22T00:18:56.527 回答