2012-06-22 34 views
0

我正在循環播放twitter feed,並且在我的代碼中的所有內容都可以正常工作,但我正在爲一件事而煩惱。對底部的if語句返回所有具有今天日期的消息。然後根據我有一個正在嘗試測試的正則表達式模式。如果它發現我聲明「發現它」,如果不是我說「找不到」。我需要幫助的是找不到的部分。而不是爲每條消息指出「未找到」,我怎樣才能使它遍歷消息,並且如果找到狀態「找到它」並停止所有消息,但是如果沒有找到,則傳遞消息,然後一旦所有循環都是完成狀態「未找到」只有一次。在twitter上循環播放,並返回一條消息

$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'; 
     } 
    } 
} 

回答

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'; 
} 
+0

將'not found'移到loop__的外側。 OP在循環完成後要求打印未找到。 –

+0

@Michael謝謝,編輯答案。 –