2014-09-03 37 views
0

解決方案php從表中的字段生成rssfeed文件名?

<?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 feed。我想從表中的字段,這是我創建生成的文件名如下:

$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是昨天晚上電視$ 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")); 
?> 

它在我的服務器上創建一個feed名稱myfeed.xml。

但是我希望Feed的文件名是$ feedlink的值。我知道這可能是一些基本的東西,但我不知道如何去做。

我想:

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

等多種組合。

回答

0

如果你想從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

+0

不,我試圖從外地得到它。我已經生成了文件名並將其存儲在一個字段中。如果$ feedlink的值爲「lastnightstelevision.xml」,那麼我如何使用它作爲文件名? – MBM 2014-09-03 13:57:53

+0

@MBM該fild的名稱和您用於提取記錄的方法是什麼? 'mysql_fetch_object()','mysql_fetch_array()'或...分享那部分PHP代碼。 – hex494D49 2014-09-03 14:02:43

+0

我已經發布了腳本。帶鏈接的字段名爲feedlink。我不需要讚揚feedlink的價值,我想使用它的確切價值。 – MBM 2014-09-03 14:12:26