使用php结束循环,直到找到匹配

时间:2011-09-27 02:55:53

标签: php loops

这是我在学习几周后首次尝试使用php脚本。所以基本上我正在解析XML博客提要。首先,如果获得博客发布日期,如果它与今天基于洛杉矶时间zome的日期匹配,它将更进一步,获得当天的当前博客帖子网址。否则它将返回“不匹配”。在找到今天的博客帖子后,如果会收集每个帖子的网址。现在这是我的问题无论我做什么它总是返回我正在寻找的代码不匹配。我假设它没有检查每个网址,但由于我的知识有限,我可以是certian。我试图在每个帖子中搜索带有正则表达式的数字字符串,如果找到它我想要回显该字符串并结束脚本,或者如果没有找到代码,则回显一条消息,说明并结束脚本。此外,如果你找到一个更好的方法或更有效的方式重写我的代码清理它有点我也欢迎

/*------------------------------------------------
//XML File and Parsing
------------------------------------------------*/
//XML document 
$rss = simplexml_load_file($xmlfeed);
//Blog Dates
$blogdate = $rss->channel->item;
//Blog URLS
$blogurl = $rss->channel->item;

/*------------------------------------------------
//Date Variables
------------------------------------------------*/
//Original date format: Mon, 26 Sep 2011 22:00:08 +0000
$post_date = $date->pubDate;
//Original date format: September 26 2011
$todays_date = date("F j Y");
$timezone = new DateTimeZone('America/Los_Angeles');
//Format blog post dates into PDT
$date1 = new DateTime($post_date);
$date1->setTimeZone($timezone);
//Output date: September 26 2011
$post_date_final = $date1->format("F j Y");
//Format server date into PDT
$date2 = new DateTime($todays_date);
$date2->setTimeZone($timezone);
//Output date: September 26 2011
$todays_date_final = $date2->format("F j Y");
echo $post_date;
/*------------------------------------------------
//Checking and Looping
------------------------------------------------*/
//Looping through blog dates for a mtach
foreach ($blogdate as $date) {
    //If dates match continue to gather URLs
    if ( $post_date_final == $todays_date_final ) {
        foreach ($blogurl as $url) {
            $postone = $url->guid[0];
            $posttwo = $url->guid[1];
            $postthree = $url->guid[2];
            $postfour = $url->guid[3];
            $postfive = $url->guid[4];
            $postsix = $url->guid[5];
            $go = array($postone, $posttwo, $postthree, $postfour, $postfive, $postsix);

            foreach ($go as $stop){
                $html = file_get_contents($stop);
                preg_match('/cd=\b[0-9]{8,15}\b/', $html, $match);
                $regex_match = $match[0];

                if (isset($regex_match)) {
                    echo $regex_match;
                }else{
                    echo "no match";
                    exit;
                }
            }
        }
    }else{
        echo "no match";
        exit;
    }
}

1 个答案:

答案 0 :(得分:1)

我只是快速浏览了你的代码,但我看到了你可能想要改变的这一行:

if(!isset($regex_match))

据说,如果没有设置$ regex_match,那么echo $ regex_match。这意味着如果你在找不到东西时试图回应它。

尝试取出!看看是否有帮助。