PHP中有一个解析URL的内置函数parse_url,用来把一个URL中的各部分拆解开来。但是诡异的是这个内置函数没有提供逆运算,有一个可以做逆运算的 http_build_url ,但是要装一个http的pecl包。

其实这个算法不难,自己写一个,做好验证和健壮性即可。

/**

* 创建url的方法,parse_url的逆运算

*

* 支持输出 http://hostname.com:8080/prefix/path!surfix?query_string#fragment

* //hostname.com/prefix/path!surfix

* /prefix/path!surfix

* /path#fregment

* ...

*

* @param mixed $urlPart parse_url的输出数据

* 扩展支持两个字段

* path_prefix 路径加前缀

* path_surfix 路径加后缀

* @return string URL

*/

function http_build_url($urlPart){

$url = '';

if ( !empty($urlPart['host']) ){

if ( !empty($urlPart['scheme']) ){

$url.=$urlPart['scheme'].':';

}

$url.='//'.trim($urlPart['host'], '/');

if ( !empty($urlPart['port']) ) {

$url.=':'.$urlPart['port'];

}

}

if ( !empty($urlPart['path_prefix']) ) {

$url .= '/'.trim($urlPart['path_prefix'], '/');

}

$url.='/'.ltrim($urlPart['path'], '/');

if ( !empty($urlPart['path_surfix']) ) {

$url .= $urlPart['path_surfix'];

}

if ( !empty($urlPart['query']) ){

$url.='?'.$urlPart['query'];

}

if ( !empty($urlPart['fragment']) ){

$url.='#'.$urlPart['fragment'];

}

return $url;

}

函数的入参可以直接是parse_url的输出。并且额外支持了两个选项,path_prefix和path_surfix。主要应用在我们的一些图片地址业务上,比如加/upload前缀加!small的缩略图后缀等。

php parse url 反向,实现PHP中parse_url的逆运算http_build_url相关推荐

  1. php parse url 反向,php parse_url()函数

    parse_url - 解析 URL,返回其组成部分. 说明 array parse_url ( string $url ) 本函数解析一个 URL 并返回一个关联数组,包含在 URL 中出现的各种组 ...

  2. php parse url 反向,PHP中一个parse_url的错误用法

    parse_url (PHP 3, PHP 4, PHP 5) parse_url - 解析 URL,返回其组成部分 描述 array parse_url ( string url ) 此函数返回一个 ...

  3. php parse url ctf,【SSRF】如何绕过filter_var(), preg_match() 和 parse_url()

    0x01 前言 这篇文章是在我看完一片国外安全大佬写的文章后对其进行总结并翻译得到的. 0x02 正文之绕过filter_var和preg_match 本片文章主要深入一种php ssrf的技术--如 ...

  4. php parse url 中文,php parse_url()函数解析URL用法总结

    php 中 parse_url()函数是解析 URL,并返回url的组成部分,但是需要注意的是此函数不是用来验证给定 URL 的合法性的,只是将其分解为下面列出的部分.不完整的 URL 也被接受,pa ...

  5. php parse url,详解php parse_url()函数的定义与用法

    php parse_url()函数的作用? php 中 parse_url()函数是解析 URL,并返回url的组成部分.它的语法如下: 语法array parse_url(string $url,i ...

  6. Django(part16)--URL反向解析

    学习笔记,仅供参考,有错必纠 模板 URL反向解析 re_path方法的name关键字 语法 re_path(regex, views, kwargs=None, name = "别名&qu ...

  7. python动态映射_Python Django框架url反向解析实现动态生成对应的url链接示例

    本文实例讲述了Python Django框架url反向解析实现动态生成对应的url链接.分享给大家供大家参考,具体如下: url反向解析:根据url路由规则,动态生成对应的url链接 (防止硬编码). ...

  8. Django的url反向解析

    Django中提供了一个关于URL的映射的解决方案,可以做两个方向的使用: 1.普通解析过程:由客户端的浏览器发起一个url请求,Django根据URL解析,把url中的参数捕获,调用相应的视图,获取 ...

  9. url编码 android,Android中的URL编码

    您如何在Android中编码URL ? 我以为是这样的: final String encodedURL = URLEncoder.encode(urlAsString, "UTF-8&qu ...

最新文章

  1. 教育部办公厅关于2020-2021学年面向中小学生的全国性竞赛活动名单的公示
  2. 渗透知识-编译器漏洞
  3. 《JavaScript高效图形编程(修订版)》——第2章 DHTML基础 2.1创建DHTML sprite
  4. OpenCASCADE可视化:3D演示之创建3D场景
  5. Apache Web Server - httpd 的长连接配置
  6. 一卡通vip充值消费线上oracle库服务器故障排查过程
  7. Deep Image Homography Estimation
  8. Google BBR拥塞控制算法模型初探
  9. Windows USB驱动开发点滴积累备忘录
  10. 线路速度之实战***
  11. 超详细MySQL安装及基本使用教程
  12. 缺陷分析之缺陷引入与移除矩阵
  13. python全套 百度云-2018年6月北京黑马python24期全套视频课程
  14. Linux 中root权限
  15. pytorch GradScale 梯度缩放算子
  16. js 获取dom离页面编剧_页面对象之外:具有宁静性和编剧模式的下一代测试自动化
  17. 14_自定义ItemDecoration实现qq好友列表分组效果
  18. 2022夏PAT甲级题解 by小柳2022.6.7
  19. 开源技术可以解决贸易战?Richard Stallman 给微软的十条公开建议等;开源之道每周评论(2019 10 08))...
  20. VMWare建立于W10的共享文件夹

热门文章

  1. Win系列:VC++编写自定义组件
  2. 源码-03-九宫格 封装 懒加载 plist
  3. django基础入门(1)django基本配置
  4. 【SQL Server中SMO的简单使用】 (装载)
  5. [Node.js] 模块化 -- http服务器模块
  6. Python_多线程编程
  7. 用jQuery实现页面遮罩弹出框
  8. vue 悬浮按钮组件_如何搭建和发布一个 Vue 组件库
  9. STM32(一)----建立嵌入式STM32工程
  10. python requests cookiejar,Python requests模块cookie实例解析