PHP:安全地将文件名转换为URL
我编写了一个PHP脚本,它扫描一个目录中的pdf文件,然后创建一个包含这些文件及其相关链接的HTML页面。文件名将用于列表项 如何确保特殊字符和URL之间的良好兼容性 例如,我有一个文件包含PHP:安全地将文件名转换为URL,php,url,url-rewriting,urlencode,scandir,Php,Url,Url Rewriting,Urlencode,Scandir,我编写了一个PHP脚本,它扫描一个目录中的pdf文件,然后创建一个包含这些文件及其相关链接的HTML页面。文件名将用于列表项 如何确保特殊字符和URL之间的良好兼容性 例如,我有一个文件包含text 49%text.pdf,服务器正在响应URLhttp://localhost/folder/text%2049%%20text.pdf请求不正确错误 我尝试使用urlencode(),但没有成功。如何改进我的脚本 更新 urlencode()返回我,我得到错误请求错误。text%2049%%20te
text 49%text.pdf
,服务器正在响应URLhttp://localhost/folder/text%2049%%20text.pdf
请求不正确错误
我尝试使用urlencode()
,但没有成功。如何改进我的脚本
更新
urlencode()
返回我
,我得到错误请求错误。text%2049%%20text.pdf
给你一个错误请求是正确的。
因为49%
应编码为49%25
结果链接应如下所示:
我使用urlencode()
进行此操作,没有问题
抱歉,没有作为评论发布,没有足够的要点。您必须使用rawurlencode()
。这会将%转换为%25,将空格转换为%20我认为,如果服务器上有一个名为“text 49%text.pdf”的文件,这是一件坏事。在将文件保存到服务器上之前,必须重命名该文件。所以,如果你上传“textétext.pdf”,比如用“text_e_text.pdf”更改他的名字!它将防止这些url错误;)当我使用文件名来填充列表时,我避免了在服务器上放置的每个文件通常使用的下划线。我知道我可以摆脱他们,但有没有办法达到最初的要求?PS该错误甚至与您的解决方案一起出现。您不能避免文件名中的%符号吗@vismark@SubinThomas这是文档标题的一部分,它必须以这种方式出现……我需要改进脚本,而不是避免困难/特殊情况。我尝试了urlencode()并获得了“test+49%25+test.pdf”@Vismark我知道URL中的百分比是用%25
转义的,我可以手动进行转义,但是有没有像urlencode()
这样的函数来转义所有这些奇怪的情况,因为我可能没有预见到所有这些情况?我无法在每次上载新文件时检查它是否有效,文件名中有一个特殊字符…不要担心,但正如我在问题中所说,urlencode()
在这种情况下不起作用。。。