PHP RSS на основе расписания - PullRequest
0 голосов
/ 17 января 2011

У меня (наверное) простой вопрос по PHP.Я вытягиваю расписание из RSS-канала.Вывод RSS выглядит так:

17th Jan 2011 : Day 2
18th Jan 2011 : Day 3
19th Jan 2011 : Day 4
20th Jan 2011 : Day 5

Я пытаюсь удалить всю информацию, поэтому остается только «День x».Расписание выполняется по 8-дневному циклу, однако я ограничиваю парсер RSS только одним днем, поэтому я получаю текущий день.

Я использую это, чтобы вытащить RSS:

$rss->parse();
$rss->showStories('1');

После небольшого изменения я придумал это.

$i=1;
while($i<=8) {
    if (preg_match("/Day 3/i", "Day ".$i)) {
        echo $i;
    } else {
        $i++;
    }
}

Очевидно, проблема начинается здесь:

if (preg_match("/Day 3/i", "Day ".$i)) {

Я хочу, чтобы он нашел текущее расписание и затем отобразил соответствующие данные.Правильно ли я подхожу к этому, может кто-нибудь указать мне правильное направление, пожалуйста?

Спасибо!

РЕДАКТИРОВАТЬ: Фиксированный код ниже для тех, кто хочет:

<?php
$url = "";
$rss = simplexml_load_file($url);
if($rss) {
    $items = $rss->channel->item;
        foreach($items as $item) {
            foreach ($item->title as $story) {
                if (!preg_match(date("/jS M Y/"), $story)) continue;
                preg_match("/Day (\d+)/", $story, $m);
                echo $m[1]; // should print "2" if today is January 17
                break; // stop searching
            }
        }
}
?>

1 Ответ

2 голосов
/ 17 января 2011

Вы не говорите, какую RSS-библиотеку вы используете, но что-то вроде

foreach ($rss->stories as $story) {
    // skips stories that are not today
    if (!preg_match(date("/jS M Y/"), $story)) continue;

    preg_match("/Day (\d+)/", $story, $m);
    echo $m[1]; // should print "2" if today is January 17

    break; // stop searching
}

может работать. Но без кода трудно помочь дальше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...