首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php如何让带有空格的链接自动添加%20

php如何让带有空格的链接自动添加%20
EN

Stack Overflow用户
提问于 2014-12-14 06:40:53
回答 3查看 2.4K关注 0票数 0

我有这个代码,它列出了目录中所有的mp3链接,但是音频播放器不会播放文件名中有空格的任何文件,如果我删除空格,它可以工作,但我想知道当文件名中有空格时,如何让脚本添加%20,这样我使用的音频播放器就可以拾取它

谢谢!

下面是我的代码

代码语言:javascript
复制
    <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>
EN

回答 3

Stack Overflow用户

发布于 2014-12-14 06:52:20

尝试使用rawurlencode或其他Url函数

代码语言:javascript
复制
echo '<li><a href="'.rawurlencode($file).'">'.$file.'<br></li>';
票数 3
EN

Stack Overflow用户

发布于 2014-12-14 06:45:45

使用str_replace将空格替换为%20。

代码语言:javascript
复制
$fileURL = str_replace(' ', '%20', $file);
echo '<li><a href="'.$fileURL.'">'.$file.'<br></li>';
票数 1
EN

Stack Overflow用户

发布于 2014-12-14 07:20:47

或者,可以修改foreach循环,如下所示:

代码语言:javascript
复制
foreach($dirFiles as $file)
{
    $url = join("%20",explode(' ',$file ) );
    echo '<li><a href="'.$url.'">'.$file.'<br></li>';
}

第一条语句只对空格进行编码,并分配结果供标记的HREF属性稍后使用。rawurlencode是实现类似结果的另一种选择,但它也可能编码更多的空格字符,这有时是好的,而其他时间可能会导致不希望的效果,例如编码作为域名一部分的字符。str_replace可能是更时髦的解决方案,因为它只需要一个函数调用,而不是这个代码片段中显示的两个函数调用。

PHP的TIMTOWDI方面在这个问题上尤为明显。您还可以执行以下操作:

代码语言:javascript
复制
<?php
$from = ' ';
$to = '+';

foreach($dirFiles as $file)
{
    $url = strtr( $file, $to, $from);
    echo '<li><a href="'.$url.'">'.$file.'<br></li>';
}

在这个解决方案中,空格的替换字符是简单的'+‘(PHP编码空格的方式),它使用strtr(),有些人认为它比str_replace()更快。在浏览器自动解码url后,任何'+‘字符都将恢复为空格。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27464412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档