我通过php脚本链接到有时会有空格的文件。所以我用%20替换空格的所有实例,然后回显链接的html。
但是我遇到了一个问题,它似乎只是忽略了%20并添加了一个空格。如果我手动输入%20的URL用于找到文件的空格。我尝试过使用" +"它确实显示在URL中,但是网址不起作用且找不到文件。
<?php $newfilename = str_replace(" ", "%20", $docs['filename']) ?>
<a href=http://<?php echo $_SERVER['HTTP_HOST']."/database/
candidates/".$newfilename;?>><"Filename"></a>
因此,如果文件名为&#34; test file.doc&#34;那么网址是&#34; mysite.com/database/candidates/test file.doc&#34; ...它会忽略%20。
如何使用名称中带空格的文件来处理此问题?
答案 0 :(得分:2)
您应该使用内置函数rawurlencode(或密切相关的urlencode)
$newfilename = rawurlencode($docs['filename']);
urlencode
用于编码查询字符串参数,这可能在这里工作,因为你只有空格。但是,rawurlencode
适用于URL的路径,这是您在示例中使用的路径。 (文档中给出的两个例子都说明了)
答案 1 :(得分:1)
您是否尝试过rawurlencode()
?
<a href=http://<?php echo $_SERVER['HTTP_HOST']."/database/candidates/".rawurlencode($newfilename);?>>
<"Filename">
</a>
最好将整个网址作为参数:
<?php $url = rawurlencode("http://{$_SERVER['HTTP_HOST']}/database/candidates/$newfilename"); ?>
<a href="<?php echo $url;?>">
<"Filename">
</a>