PHP-如何重新编码URI

PHP-如何重新编码URI,php,url-encoding,Php,Url Encoding,我想我需要获取一个已经用PHP解码的uri,并对其重新编码 情况如下: JavaScript将编码的uri作为查询字符串参数传递给php脚本 PHP脚本将uri作为隐藏的输入值嵌入到html文档中,并将文档响应给用户代理 JavaScript读取嵌入的uri,并根据隐藏输入的值设置当前文档的位置 在第2步中,我发现在通过$\u GET读入Uri后,Uri被完全解码。因此,当我将uri嵌入到隐藏的输入中时,它将变成未编码的。因此,我想运行一个PHP脚本,对Uri进行正确的重新编码,例如: http

我想我需要获取一个已经用PHP解码的uri,并对其重新编码

情况如下:

  • JavaScript将编码的uri作为查询字符串参数传递给php脚本
  • PHP脚本将uri作为隐藏的输入值嵌入到html文档中,并将文档响应给用户代理
  • JavaScript读取嵌入的uri,并根据隐藏输入的值设置当前文档的位置
  • 在第2步中,我发现在通过$\u GET读入Uri后,Uri被完全解码。因此,当我将uri嵌入到隐藏的输入中时,它将变成未编码的。因此,我想运行一个PHP脚本,对Uri进行正确的重新编码,例如:

    http://my.example.com/dog walk?is=very great
    
    ==>
    
    http://my.example.com/dog%20walk?is=very%20great
    
    是否有一个预先构建的php函数,或者我应该自己编写

    请注意:urlencode和URLEDECODE不是获得上述示例中所需输入/输出的答案

    谢谢, 梅西你在找:?

    你在找:?

    urldecode:

    URL解码:


    我不知道是否能帮助您,但PHP有3个有用的函数:

    $url = parse_url('put the url here');
    parse_str( $url['query'], $query ); // generating an array by reference (yes, kinda weird)
    echo $query; //in this line, you can encode or decode.
    
    或者,如果要装载查询,可以使用http_build_query();接受数组中的值,如:

    $url = 'http://my.example.com/dog walk?';
    $array = Array (
     'is' => 'very_great',
    );
    $url_created = $url . http_build_query($array);
    

    我不知道PHP是否能帮助您,但PHP有3个有用的函数:

    $url = parse_url('put the url here');
    parse_str( $url['query'], $query ); // generating an array by reference (yes, kinda weird)
    echo $query; //in this line, you can encode or decode.
    
    或者,如果要装载查询,可以使用http_build_query();接受数组中的值,如:

    $url = 'http://my.example.com/dog walk?';
    $array = Array (
     'is' => 'very_great',
    );
    $url_created = $url . http_build_query($array);
    

    当你传递一个完整的URI时,这个方法有效吗?我认为它只有在传递单个参数值时才起作用。是的,这不会执行所需的功能,在我上面的示例中,它会生成:http%3A%2F%2Fmy.example.com/dog%20walk?是%3drevery%20吗?这不是我想要的。事实上,唯一不需要编码的部分是协议。我只想将%3A%2F%2F替换为://。如果你不是在寻找urlencode,我认为PHP中没有函数可以做到这一点。你应该自己做。。。使用$\u SERVER['SERVER\u NAME']将其从URL中删除,对剩余的字符串进行URL编码,并使用$\u SERVER['SERVER\u NAME']再次对其进行编码…当您传递整个URI时,这是否有效?我认为它只有在传递单个参数值时才起作用。是的,这不会执行所需的功能,在我上面的示例中,它会生成:http%3A%2F%2Fmy.example.com/dog%20walk?是%3drevery%20吗?这不是我想要的。事实上,唯一不需要编码的部分是协议。我只想将%3A%2F%2F替换为://。如果你不是在寻找urlencode,我认为PHP中没有函数可以做到这一点。你应该自己做。。。使用$\u SERVER['SERVER\u NAME']将其从URL中删除,对剩余字符串进行URL编码,并使用$\u SERVER['SERVER\u NAME']再次对其进行编码…请仔细阅读问题,尤其是所需的输入/输出。请仔细阅读问题,特别需要的输入/输出。你如何用JavaScript编码URI?你如何用JavaScript编码URI?谢谢,这是最有用的,我设计的见原始帖子。谢谢,这是最有用的,我设计的见原始帖子。