PHP - 如何重新编码URI

时间:2011-01-22 19:20:39

标签: php url-encoding

认为我需要使用已在PHP中解码的uri,并对其进行重新编码。

情况如下:

  1. JavaScript将编码的uri作为查询字符串参数传递给php脚本。
  2. PHP脚本将uri作为隐藏的输入值嵌入到html文档中,并将文档响应给用户代理。
  3. JavaScript读取嵌入式uri,并根据隐藏输入的值设置当前文档的位置。
  4. 在第2步,我发现Uri在通过$ _GET读取后完全解码。因此,当我将uri嵌入隐藏输入时,它将变为未编码状态。所以我想运行一个PHP脚本,它正确地重新编码Uri ex:

    http://my.example.com/dog walk?is=very great
    
    ==>
    
    http://my.example.com/dog%20walk?is=very%20great
    

    是否有预先构建的php函数,或者我应该自己编写?

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

    谢谢, 梅西

3 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

我不知道是否会对你有所帮助,但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);

答案 2 :(得分:0)