【问题标题】:Trim characters from RSS feed从 RSS 提要中修剪字符
【发布时间】:2013-11-04 09:28:20
【问题描述】:

我正在使用 PHP 向我的网站调用 RSS 提要。目前我下面的代码正在调用 pubDate 的全部内容:

<pubDate>Thu, 12 Sep 2013 07:23:59 +0000</pubDate>

如何仅显示上述示例中的日期和月份,即 9 月 12 日?

编辑

我应该澄清一下,上面的代码行是我目前得到的一个示例输出,但是当我从一个 RSS 提要中调用最新的 3 个帖子时,这个日期和时间会有所不同。因此,我需要代码更加动态(如果这是正确的术语!)

此代码是我获取 RSS 提要内容的完整代码:

<?php
$counter = 0;
$xml=simplexml_load_file("http://tutorial.world.edu/feed/");
foreach ($xml->channel->item as $item) {
    $title = (string) $item->title; // Title Post
    $link   = (string) $item->link; // Url Link
    $pubDate   = (string) $item->pubDate; // date
    $description = (string) $item->description; //Description Post

    echo '<div class="display-rss-feed"><a href="'.$link.'" target="_blank" title="" >'.$title.' </a><br/><br/>';
    echo $description.'<hr><p style="background-color:#e4f;">'.$pubDate.'</p></div>';

    if($counter == 2 ) {
        break;
    } else {
        $counter++;
    }

} ?>

【问题讨论】:

  • 用日期函数试试strtotime

标签: php html trim


【解决方案1】:

使用strtotimedate

$pubDate = 'Thu, 12 Sep 2013 07:23:59 +0000';

$pubDate = date('j M', strtotime($pubDate)); //This is the only one you need!

var_dump($pubDate); //string(6) "12 Sep"

【讨论】:

  • 我应该澄清一下,您使用的变量是我目前拥有的示例输出,但它可能会随着我从 RSS 提要中调用最新的 3 个帖子而改变。因此日期和时间可能会发生变化。
  • @egr103 我知道。第一行只是为了让您在我的示例中实际获得输出。 您的代码中唯一需要的行是第二行 - 其余的是示例strtotime 非常擅长理解大多数日期,所以几乎无论你提供什么,它都能够将它变成一个 unix 时间戳,以便在 date 中使用。
  • 对了。那是我对你的不理解!这很有效,非常感谢您的解释:)
【解决方案2】:

您可以使用date_parse 解析日期,然后在结果数组中使用monthday 的值。

【讨论】:

  • 问题已更新以进一步澄清问题。结合我的新手知识做了一些阅读后,看起来我好像不能使用date_parse?
【解决方案3】:

您可以使用带有所需正则表达式的 preg_match() 函数来获取特定数据。 例如

$content="2013 年 9 月 12 日星期四 07:23:59 +0000";

preg_match("/.*,(.*)20[0-9][0-9]/","$content",$g_val) ;

$g_val[1] 将有“ 12 Sep”

【讨论】:

    【解决方案4】:

    即使这样也有效

    <?php
    $str="<pubDate>Thu, 12 Sep 2013 07:23:59 +0000</pubDate>";
    $str=explode(" ",$str);
    echo $str[1]." ".$str[2];//12 Sep
    

    编辑:

    <?php
    $counter = 0;
    $xml=simplexml_load_file("http://tutorial.world.edu/feed/");
    foreach ($xml->channel->item as $item) {
        $title = (string) $item->title; // Title Post
        $link   = (string) $item->link; // Url Link
        $pubDate   = (string) $item->pubDate; // date
        $pubDate=explode(" ",$pubDate);
        $pubDate =  $pubDate[1]." ".$pubDate[2];
        $description = (string) $item->description; //Description Post
    
        echo '<div class="display-rss-feed"><a href="'.$link.'" target="_blank" title="" >'.$title.' </a><br/><br/>';
        echo $description.'<hr><p style="background-color:#e4f;">'.$pubDate.'</p></div>';
    
        if($counter == 2 ) {
            break;
        } else {
            $counter++;
        }
    
    } ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-18
      • 2021-05-17
      • 2016-08-22
      • 2013-05-08
      相关资源
      最近更新 更多