这是一个非常愚蠢的问题,对不起。有一个很大且相当复杂的系统有一个错误,我设法将其追踪到这一部分
return str_replace('%2F', '/', rawurlencode(str_replace('%20', ' ', $key)));
有一条注释解释了为什么要替换斜线 - 以保留路径结构,例如编码 1/编码 2/等。但是,没有任何解释为什么 %20 被空格替换,而这部分是错误的直接原因。我很想删除 str_replace() 但看起来它是出于某种原因放在那里的,我觉得这样做会破坏其他东西。有没有人遇到过类似的事情?也许这是对某些 PHP 错误的肮脏修复?任何猜测和见解都非常感谢!