【问题标题】:php generating rssfeed filename from field in a table?php 从表中的字段生成 rssfeed 文件名?
【发布时间】:2014-09-03 13:36:39
【问题描述】:

解决方案

<?php
    include("authenticate.php");
    $user = $_SESSION['UserName'];
    $initialdata = $result = mysql_query("SELECT * FROM ccregisterfeed WHERE username = '$user'");
    while($row = mysql_fetch_assoc($initialdata)){
    $filename = $row["feedlink"];
    // var_dump ($filename);
    } 
    $initdata = mysql_fetch_assoc($initialdata);
    $result = mysql_query("SELECT * FROM ccshowcontent JOIN ccaudio ON ccshowcontent.id = ccaudio.id WHERE ccshowcontent.username = '$user' ORDER BY ccshowcontent.id DESC")
    or die(mysql_error());
    while($row = mysql_fetch_assoc($result)){
    $items[] = $row;
    }

$rss = createXML($items,$initdata);
//echo "feed updated!";
$filename = ($filename);
file_put_contents($filename,$rss);
header("Location: ccupload.php?message=".urlencode("Show saved and feed updated"));
?>

完整的脚本

<?php
  include("authenticate.php");
  $user = $_SESSION['UserName'];
  $initialdata = $result = mysql_query("SELECT * FROM ccregisterfeed WHERE username = '$user'");
  $initdata = mysql_fetch_assoc($initialdata);
  $result = mysql_query("SELECT * FROM ccshowcontent JOIN ccaudio ON ccshowcontent.id = ccaudio.id WHERE ccshowcontent.username = '$user' ORDER BY ccshowcontent.id DESC")
or die(mysql_error());
while($row = mysql_fetch_assoc($result)){
     $items[] = $row;
}

function createXML($items,$data){

    $xml = "<?xml version='1.0' encoding='UTF-8'?>
<rss version='2.0' xmlns:atom='http://www.w3.org/2005/Atom'>
<channel>
<atom:link href='".$data['feedlink']."'
rel='self' type='application/rss+xml' />
<title>".$data['feedtitle']."</title>
<link>".$data['websitelink']."</link>
<category domain=''>".$data['category']."</category>
<copyright>".$data['copyright']."</copyright>
<pubDate>".date("D, d M Y H:i:s O", strtotime($data['pubdate']))."</pubDate>
<language>en-us</language>
<description>".$data['feeddescription']."</description>
<image>
<title>".$data['feedtitle']."</title>
<link>".$data['websitelink']."</link>
<url>".$data['imagelink']."</url>
<description>".$data['imagetitle']."</description>
</image>";

$audiodir = "http://thetradingcardgenerator.com/MP3/";
foreach($items as $key => $item){
    $path = $audiodir.$item['path'];
    $pdate = strtotime($item['pubdate']);
    $date = date("D, d M Y H:i:s O", $pdate);
    $xml .="
<item>
<title>".$item['title']."</title>
<link>".$path."</link>
<guid>".$path."</guid>
<pubDate>".$date."</pubDate>
<description><![CDATA[".$item['description']."]]></description>
</item>";

}

$xml .="
</channel>
</rss>";

return $xml;
}

$rss = createXML($items,$initdata);
//echo "feed updated!";
$filename = '$feedlink' . ".xml";
file_put_contents($filename,$rss);
header("Location: ccupload.php?message=".urlencode("Show saved and feed updated"));
?>

第一次进入

我编写了一个脚本来从表格中输入的数据生成 rss 提要。我想从表中的一个字段生成文件名,我创建如下:

$path = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
$feedtitle = str_replace(" ", "", $feedtitle);
$feedtitle = str_replace("_", "", $feedtitle);
$feedtitle = str_replace("-", "", $feedtitle);
$feedtitle = strtolower($feedtitle);
$path = substr($path, 0, strrpos($path, "/"));
$feedlink = "$feedtitle" . '.xml';

因此,如果 $feedtitle 是 Last Nights Television,那么 $feedlink 的值将是

lastnightstelevision.xml

我已经通过指定文件名测试了脚本,它可以工作,从表中提取数据并创建提要。这是脚本的最后一部分:

$rss = createXML($items,$initdata);
$filename = 'myfeed.xml';
file_put_contents($filename,$rss);
header("Location: uploadcontent.php?message=".urlencode("Show saved and feed updated"));
?>

这会在我的服务器上创建一个提要名称 myfeed.xml。

但是,我希望提要的文件名是 $feedlink 的值。我知道这可能是一些基本的东西,但我不知道该怎么做。

我试过了:

$filename = ".$feedlink";
$filename = ".$feedlink[feedlink]";

还有许多其他组合。

【问题讨论】:

    标签: php rss filenames


    【解决方案1】:

    如果你想从 RSS 中获取该文件名,试试这个

    $attribute = $rss->channel->children("atom", true)->link->attributes();
    $filename = $attribute["href"];
    

    或者这个,如果你想从你的第一个查询返回的结果中获取它

    $filename = $initdata['feedlink'];
    

    上面的结果是一个完整的路径,所以如果你只需要那个路径的文件名,使用这个

    $feedlink = "http://mywbsite/mydir/lastnightstelevision.xml";
    $filename = basename($feedlink);
    

    输出:

    lastnightstelevision.xml
    

    Working demo

    【讨论】:

    • 不,我正在尝试从字段中获取它。我已经生成了文件名并将其存储在一个字段中。如果 $feedlink 的值为“lastnightstelvision.xml”,我该如何使用它作为文件名?
    • @MBM 该字段的名称是什么,您使用哪种方法来获取记录; mysql_fetch_object()mysql_fetch_array() 或...分享那部分 PHP 代码。
    • 我已经发布了脚本。带有链接的字段名为 feedlink。我不需要修改 feedlink 的值,我想使用它的确切值。
    • 应该是 $filename = $row["feedlink"];我更新了代码以显示修改后的查询。 var_dump ($filename) 给出了正确的值并且它正在工作!谢谢!!!!该代码应该对任何想要生成 rss 提要的人有用。
    猜你喜欢
    • 2011-04-12
    • 1970-01-01
    • 1970-01-01
    • 2021-04-24
    • 1970-01-01
    • 1970-01-01
    • 2019-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多