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
我写了一个 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