我正在循环推送一个推文,我的代码中的所有内容都运行良好,但我正在努力解决一件事。底部的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';
}
}
}
答案 0 :(得分: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';
}