0

Twitter フィードをループしており、コード内のすべてが正常に動作していますが、1 つのことに苦労しています。一番下の if ステートメントは、今日の日付を持つすべてのメッセージを返します。それに基づいて、テストしようとしている正規表現パターンがあります。見つかった場合は「見つかった」と記載し、そうでない場合は「見つかりません」と記載します。私が助けを必要としているのは、見つからない部分です。メッセージごとに「見つかりません」と述べるのではなく、メッセージをループして、見つかった場合は「見つかった」状態ですべてを停止するようにするにはどうすればよいですか。完了状態「見つかりません」は 1 回だけです。

$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 に答える