我有这个代码列出目录中的所有我的mp3链接,但音频播放器不会播放文件名中有空格的任何文件,如果我删除空格,它的工作但我想知道我是否如果文件名中有空格,那么脚本如何添加%20,这样我正在使用的音频播放器可以拾取它
谢谢!
继承我的代码
<ul id="playlist">
<?php
$dirFiles = array();
// opens images folder
if ($handle = opendir('.')) {
while (false !== ($file = readdir($handle))) {
// strips files extensions
$crap = array(".jpg", ".jpeg", ".JPG", ".JPEG", ".png", ".PNG", ".gif", ".GIF", ".bmp", ".BMP", "_", "-", "error_log", ".php");
$newstring = str_replace($crap, " ", $file );
//asort($file, SORT_NUMERIC); - doesnt work :(
// hides folders, writes out ul of images and thumbnails from two folders
if ($file != "." && $file != ".." && $file != "index.php" && $file != ".DS_Store" && $file != "download.php" && $file != "error_log" && $file != "Thumbnails") {
$dirFiles[] = $file;
}
}
closedir($handle);
}
sort($dirFiles);
foreach($dirFiles as $file)
{
//echo "<li><img style=\"padding-right: 10px;vertical-align: middle;height: 60px;\" src=\"http://www.ggcc.tv/LogoNE.png\" />";
echo '<li><a href="'.$file.'">'.$file.'<br></li>';
}
?>
</ul>
答案 0 :(得分:3)
尝试rawurlencode或其他网址功能
echo '<li><a href="'.rawurlencode($file).'">'.$file.'<br></li>';
答案 1 :(得分:1)
使用str_replace将空格替换为%20。
$fileURL = str_replace(' ', '%20', $file);
echo '<li><a href="'.$fileURL.'">'.$file.'<br></li>';
答案 2 :(得分:0)
或者,可以按如下方式修改foreach循环:
foreach($dirFiles as $file)
{
$url = join("%20",explode(' ',$file ) );
echo '<li><a href="'.$url.'">'.$file.'<br></li>';
}
第一个语句仅对空格进行编码,并将结果分配给以后使用&lt; a&gt;的HREF属性。标签。 rawurlencode是另一种实现类似结果的选项,但它也可能编码的不仅仅是空格字符,有时候这些字符是好的,而其他时候可能会产生不良影响,例如编码属于域名的字符。 str_replace可能是更时髦的解决方案,因为它只需要一个函数调用而不是本片段中显示的两个函数。
PHP的TIMTOWDI方面对这个问题特别明显。您还可以执行以下操作:
<?php
$from = ' ';
$to = '+';
foreach($dirFiles as $file)
{
$url = strtr( $file, $to, $from);
echo '<li><a href="'.$url.'">'.$file.'<br></li>';
}
使用此解决方案,空间的替换字符是简单的&#39; +&#39; (PHP&#39;编码空格的方式)它使用strtr(),有些人认为它比str_replace()更快。任何&#39; +&#39;浏览器自动解码网址后,字符将恢复为空格。