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

PHP: safely transform a file name into an URL

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

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

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

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

更新

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

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

结果link应该是这样的: <a href="text%2049%25%20text.pdf"> text 49% text.pdf</a>

我用 urlencode() 没问题。

抱歉没有发表评论,积分不够

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