PHP:安全地将文件名转换为URL

时间:2015-09-17 09:10:36

标签: php url url-rewriting urlencode scandir

我写了一个PHP脚本,它扫描目录中的pdf文件,然后创建一个HTML页面,其中包含这些文件的列表及其相关链接。该文件的名称将用于列表项。

如何确保特殊字符与URL之间的良好兼容性?

例如,我有一个包含text 49% text.pdf的文件,服务器正在响应网址http://localhost/folder/text%2049%%20text.pdf并出现Bad Request错误。

我尝试使用urlencode()但没有成功。我怎样才能改进我的剧本?

更新

urlencode()返回给我<a href="text+49%25+text.pdf">text 49% text.pdf</a>,由此我得到Bad Request错误。

2 个答案:

答案 0 :(得分:1)

您必须使用rawurlencode()。这会将%转换为%25,将空格转换为%20

答案 1 :(得分:0)

text%2049%%20text.pdf给你一个Bad Request是正确的。 因为49%应编码为49%25

结果链接应如下所示:     <a href="text%2049%25%20text.pdf"> text 49% text.pdf</a>

我毫无问题地使用urlencode()

很抱歉没有发表评论,没有足够的意见。