php如何与空格链接自动添加%20

时间:2014-12-13 22:40:53

标签: php html hyperlink

我有这个代码列出目录中的所有我的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>

3 个答案:

答案 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;浏览器自动解码网址后,字符将恢复为空格。