本文介绍如何使用 `urlencode()` 函数正确编码字符串(如含 `+`、空格、`/` 等特殊字符),确保重定向时 url 参数被准确解析,避免 `+` 被误作空格、斜杠破坏路径结构等问题。
在 PHP 中构建带参数的重定向 URL(如 header(“Location: …”))时,若原始数据包含特殊字符(例如数学表达式中的 +、空格、/、?、& 等),直接拼接会导致 URL 解析异常:浏览器会将未编码的 + 视为空格(因 application/x-www-form-urlencoded 格式中 + 是空格的约定编码),后端接收时便无法还原原始值。
正确做法是——对每一个需作为查询参数值传递的变量,单独调用 urlencode() 进行百分号编码(URL encoding)。该函数会将 + 编码为 %2B,空格为 %20,/ 为 %2F,确保语义完整且符合 RFC 3986 标准。
例如,修复你提供的代码: