我有一台安装了PHP的VPS网络服务器,并且有几个文件夹,包含来自学校的录音。我想为每个文件夹生成一个RSS提要,按字母顺序列出.mp3文件(因为它们包含像001-filename这样的数字前缀)。有没有办法做到这一点目前有效?我在网上发现了这两个脚本,但似乎没有一个适合我。
N°2似乎是最简单的脚本,但如果我编辑变量并将其上传到相应的文件夹,它似乎不起作用。这是我导航到我的页面的结果:
?xml version =“1.0”?> 0){$ files [] ['name'] = $ file; $ files [] ['timestamp'] = filectime($ file); closedir($ dir); // natcasesort($ files); - 我们将使用日期和时间对列表进行排序。 for($ i = 0; $ i \ n“; echo”\ n“; echo”“。$ feedBaseURL。$ files [$ i] ['name']。”\ n“; echo”“。$ feedBaseURL。 $ files [$ i] ['name']。“\ n”; // echo“”。date(“DM j G:i:s TY”,$ files [$ i] ['timestamp'])。“ \ n“; // echo”“。$ files [$ i] ['timestamp']。”\ n“; echo”\ n“;}}}?>
这是我的php -version PHP 5.6.17-0 + deb8u1(cli)(建于2016年1月13日09:10:12)
我的最终结果应该是:
website.com/chemistry/为所有化学音频文件提供RSS源
website.com/english/拥有所有英语音频文件的RSS源
答案 0 :(得分:0)
首先获取原始github脚本,将其保存到文件(扩展名为.php)并将其上传到您的服务器,以确保它按原样运行。我得到以下内容(在Chrome中)(我将网站名称更改为example.com,因此我可以在此处发布):
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
<channel>
<title>My Audio Feed</title>
<link>http://www.example.com/audio</link>
<description>Feed for the my audio files in some server folder</description>
<atom:link href="http://gogglesoptional.com/bloopers" rel="self" type="application/rss+xml"/>
</channel>
</rss>
如果可行,请尝试将<?= '?'; ?>
替换为<?php echo '?'; ?>
。来自github的脚本包含与XML混合的PHP代码,并且您的输出表明某些内容(语法问题,缺少<?php
等)在没有预期的情况下将其从php模式切换到xml。
答案 1 :(得分:0)
将任何出现的PHP代码的每个开头从<?
替换为<?php
,然后它才能正常工作。 XML解析器建议<?
标记标记XML声明的开头。
答案 2 :(得分:0)
<强>要点:强>
以下是我必须要做的才能使GitHub脚本工作。
首先,你需要有适当的扩展名。
第14行: $allowed_ext = ".mp4,.MP4,.mp3,.MP3";
确保在第一个扩展程序的前面有.
或某个字符(甚至可能是*
)。
示例:$allowed_ext = ".mp3";
检查文件扩展名的strpos()
正在检查以确保mp3
在列表中并返回位置。如果前面没有.
,如果它是第一个扩展名且代码大于0 >0
,它将返回0,因此它将不返回任何结果,并且您将错过所有具有该结果的文件列出第一个扩展名。
我做的第二件事是取消区分大小写的文件扩展名。
第30行:$ext = strtoupper($path_info['extension']);
它自动使扩展名为大写,因此扩展列表的".mp3, .MP3"
是多余的,并且很好地忽略了"mp3"
扩展名,因为它是小写的。
以下是我修订的line 32
。我强制$allowed_ext
变量在strpos
中为大写,以使$ext
变量的脚本力也匹配为大写。
if($file !== '.' && $file !== '..' && !is_dir($file) && strpos(strtoupper($allowed_ext), $ext)>0)