代码之家  ›  专栏  ›  技术社区  ›  John

逗号丢失,编码地址时转换为和号

  •  0
  • John  · 技术社区  · 6 年前

    我的地址如下:

    马萨诸塞州波士顿市大街123号,邮编:02137

    我需要一个地址通过URL保持完整,因此我尝试了以下操作:

    echo urlencode($address);
    echo rawurlencode($address);
    

    问题是逗号一直被转换成和号!

    如何防止(客户)?PHP?这里我不确定)它是从逗号转换成和号?

    HTTP查询是 address 接下来发生的是:

    print_r($_GET);
    

    产量:

    数组(

    [地址]=>123 Main Street

    [马萨诸塞州波士顿]=>

    [02137]=>

    )

    1 回复  |  直到 6 年前
        1
  •  1
  •   Obsidian Age    6 年前

    如果他们被转换成和号符号,就会出现可怕的错误,因为两者都是。 urlencode rawurlencode 将逗号转换为 %2C .

    对字符串进行编码 123 Main Street, Boston Massachusetts, 02137 具有 拉乌尔伦科
    应该给你 123%20Main%20Street%2C%20Boston%20Massachusetts%2C%2002137 .

    从这里开始,这只是一个简单的使用问题 rawurldecode 当从url中读取并将编码的字符串转换回原始字符串时:

    $address = "123 Main Street, Boston Massachusetts, 02137";
    echo $address; // 123 Main Street, Boston Massachusetts, 02137
    
    $encoded = rawurlencode($address);
    echo $encoded; // 123%20Main%20Street%2C%20Boston%20Massachusetts%2C%2002137
    
    $decoded = rawurldecode($encoded);
    echo $decoded; // 123 Main Street, Boston Massachusetts, 02137
    

    这可以看出是有效的 here .