parse_url函数可以讲一个url字符串解析成一个数组,但是php中似乎没有parse_url的逆向函数来讲一个解析出来的数组组合成url字符串,只有一个http_build_query用来将数组组合成query string。于是我自己写了一个http_build_url函数将parse_url解析出来的数组组合成完整的url。

/**
* 根据parse_url格式的数组生成完整的url
* @param array $arr 接受parse_url解析出来的所有参数,完整参数实例如下:
* Array
* (
* [scheme] => http // 协议
* [host] => www.baidu.com // 主机
* [port] => 80 // 端口,可选
* [path] => /path/file.php // 路径(文件名),可选
* [query] => a=aaa&b=aaabbb // 参数(query string),可选
* [fragment] => 123 // 附加部分或者叫做锚点(#后面的),可选
* )
*/
function http_build_url($url_arr){
$new_url = $url_arr['scheme'] . "://".$url_arr['host'];
if(!empty($url_arr['port']))
$new_url = $new_url.":".$url_arr['port'];
$new_url = $new_url . $url_arr['path'];
if(!empty($url_arr['query']))
$new_url = $new_url . "?" . $url_arr['query'];
if(!empty($url_arr['fragment']))
$new_url = $new_url . "#" . $url_arr['fragment'];
return $new_url;
}

使用测试:

$url = "http://www.dragondean.cn:80/path/file.php?a=aaa&b=bcdefg#123";
$url_arr = parse_url($url);
print_r($url_arr); $url_new = http_build_url($url_arr);
echo $url_new;

运行结果:

Array
(
[scheme] => http
[host] => www.dragondean.cn
[port] => 80
[path] => /path/file.php
[query] => a=aaa&b=bcdefg
[fragment] => 123
)
http://www.dragondean.cn:80/path/file.php?a=aaa&b=bcdefg#123

最新文章

  1. java中是否会存在内存泄漏
  2. ios开发--GCD使用介绍:4-延迟执行操作
  3. Java 8 VM GC Tunning Guide Charter 5
  4. IDEA 13》》》14破解
  5. C++中指针和引用的选择
  6. HTTP POST请求的Apache Rewrite规则设置
  7. Time_wait问题小结
  8. python学习之字符串(下)
  9. Download and Install Apache Zookeeper on Ubuntu
  10. 博客系统typecho的安装与使用
  11. 打开RAD Studio XE5提示"displayNotification:内存不够"解决办法
  12. Scala函数式对象-有理数
  13. 如何在eclipse 里面调试java.lang包的代码
  14. netcore 发布 到 windows server IIS
  15. maven在eclipse上的配置
  16. [小技巧] gcc attribute error 属性小试
  17. C++调用SQLServer存储过程
  18. 2019 CCPC-Wannafly Winter Camp Day5(Div2, onsite)
  19. mysql 各种存储引擎的特点
  20. Python列表切片详解([][:][::])

热门文章

  1. 使用Hydra通过ssh破解密码
  2. 没有绝对的cc.ResolutionPolicy.FIXED_WIDTH或cc.ResolutionPolicy.FIXED_HEIGHT
  3. 重装Oracle时出现SID已存在问题的解决办法
  4. C#结构体数组间的转化
  5. ACM学习历程—51NOD 1770数数字(循环节)
  6. 不得不注意tornado多进程部署的副作用
  7. hdu 4609 3-idiots——FFT
  8. CAN总线位仲裁技术
  9. 南阳OJ 1170 最大的数
  10. Secure CRT修改文件夹的颜色