搜索

首页  >  问答  >  正文

移除 "+" 字符是在 PHP 中回显 $_GET 变量时的正确做法吗?

我有一个URL字符串,类似于https://example.com/path/?welcome_screen=1&email_address=something+else@example.com

在PHP中,我调用<?php echo $_GET['email_address']; ?>

这将产生something else@example.com

具体来说,电子邮件地址中的+被替换成了空格。

  1. 这是预期的吗?
  2. 如果是,是否有办法在上述的echo代码中防止这种情况发生?
  3. 还是应该在收集电子邮件地址时进行处理?

P粉481815897P粉481815897452 天前506

全部回复(1)我来回复

  • P粉032900484

    P粉0329004842023-09-10 12:11:53

    1. 是的,+ 是在URL中表示空格的一种方式。PHP在创建$_GET数据时会自动对值进行URL解码,并将其转换为空格,因为它假设这就是原始URL中的值应该表示的内容。

    2. 不,那时已经太晚了。

    3. 是的,您应该在将值包含在URL中之前进行URL编码,以便+不被视为特殊字符。如果是PHP生成URL,您可以使用urlencode()函数。大多数其他编程语言都有等效的内置函数。

    回复
    0
  • 取消回复