范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

ulthonuri简单又优雅地解析URL

  一个能够简单地解析和操作URL的类库。
  开发中,我们会经常处理URL,在以前我们会向下面这样做:
  比如我们希望做一个在链接中增加lang参数的处理,可能会封装这样一个函数:function switch_lang_url($lang) {      $url = Request::url();     // 解析URL     $url_info = parse_url($url);      $query = [];      // 获取query,但有时不存在这个元素     if (isset($url_info["query"])) {         parse_str($url_info["query"], $query);     }     // 设置lang参数     $query["lang"] = $lang;      // 把新的query设置数组重新生成query     $url_info["query"] = http_build_query($query);     // 把url的设置重新生成url     return unparse_url($url_info); }
  在上面我们可以看到,我们希望获得url中的lang参数,返回新的带有lang的参数。
  但仅仅是这样做是不够的,我们还要再封装一个unparse_url用于把url的解析结果编码成url。function unparse_url($parsed_url) {     $scheme   = isset($parsed_url["scheme"]) ? $parsed_url["scheme"] . "://" : "";     $host     = isset($parsed_url["host"]) ? $parsed_url["host"] : "";     $port     = isset($parsed_url["port"]) ? ":" . $parsed_url["port"] : "";     $user     = isset($parsed_url["user"]) ? $parsed_url["user"] : "";     $pass     = isset($parsed_url["pass"]) ? ":" . $parsed_url["pass"]  : "";     $pass     = ($user || $pass) ? "$pass@" : "";     $path     = isset($parsed_url["path"]) ? $parsed_url["path"] : "";     $query    = isset($parsed_url["query"]) ? "?" . $parsed_url["query"] : "";     $fragment = isset($parsed_url["fragment"]) ? "#" . $parsed_url["fragment"] : "";     return "$scheme$user$pass$host$port$path$query$fragment"; }
  这样一通操作下来,虽然代码总体不复杂,但是写起来很不顺手,要处理很多边界情况,比如:解析完url之后还要判断query参数是否存在再把字符串的query转成我们需要的数组设置完query数组还要再转回去最后还要依赖一个外部参数生成最终的url
  总之一个小小的替换url的get参数的事情,要写的东西却太多了。新的操作
  但是有这样一个简单却实用的库,能够让这些操作变得非常简单,像下面这样:<?php use UlthonURIURI;  function switch_lang_url($lang) {     $url = "https://phpreturn.com/index/a6310ae8e7c561.html?name=john&emailjohn@smith.com#fragment";     $uri = URI::make($url);     $url->set("lang",$lang);     return $url->url(); }
  是的,就这么简单,还可以使用链式操作,让代码更精简:<?php use UlthonURIURI;  function switch_lang_url($lang) {     $url = "https://phpreturn.com/index/a6310ae8e7c561.html?name=john&emailjohn@smith.com#fragment";     return  URI::make($url)->set("lang",$lang)->url() }使用文档
  最低支持php7.2,通过composer安装:composer require ulthon/uri
  基本的使用方式如下,通过make静态方法或手动实例化:use UlthonURIURI;  $url = "https://phpreturn.com/index/a6310ae8e7c561.html?name=john&emailjohn@smith.com#fragment";  $uri = URI::make($url);  // 或者  $uri = new URI($url);
  实例化完成之后,就可以使用类库方法随心所欲的操作URL。
  比如设置协议或域名:use UlthonURIURI;  $url = "phpreturn.com?name=john&emailjohn@smith.com";  $newUrl = URI::make($url)     ->scheme("http") // 修改链接为: http://phpreturn.com/index/a6310ae8e7c561.html?name=john&emailjohn@smith.com     ->domain("doc.ulthon.com") // 修改链接为: http://doc.ulthon.com/index/a6310ae8e7c561.html?name=john&emailjohn@smith.com     ->url();
  支持的方法如下:scheme()user()pass()host()port()path()query()fragment()
  如果传入参数,就是设置,否则只是读取。比如我们要读取域名:use UlthonURIURI;  $url = "http://phpreturn.com?name=john&emailjohn@smith.com";  $domain = URI::make($url)     ->domain();
  他还支持更复杂的用法,比如解析相对路径:use UlthonURIURI;  $url = "http://phpreturn.com/dir/sub/file.php?name=john&emailjohn@smith.com";  $relativeUrl = "../../hello.php";  $newUrl = URI::make($url)     ->relative($relativeUrl) // 链接修改为: http://phpreturn.com/hello.php?name=john&emailjohn@smith.com     ->url();
  在设置和获取query时,支持通过点分隔符读取多级数组,比如想要获取这样的值$_GET["post"]["content"]["html"] ,这时只需要使用post.content.html即可获取。
  query的操作有这些:add() 添加get参数remove() 删除get参数set() 设置get参数get() 读取get参数
  其中remove方法支持通过回调函数方式:$url = "https://phpreturn.com/?utm_source=summer-mailer&utm_medium=email&utm_campaign=summer-sale";  $newUrl = URI::make($url)->remove(function ($key, $value) {     return (bool)preg_match("#^utm_#si", $key); })->url();
  这样一个库,很简单,却很好用,提升开发幸福感。原文标题:[ulthon/uri]简单又优雅的解析URL
  原文地址:https://phpreturn.com/index/a6353461657301.html
  原文平台:PHP武器库
  版权声明:本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站允许任何形式的转载/引用文章,但必须同时注明出处。

国际乒联第3周排名,小魔王孙颖莎3项排榜首,樊振东男单断层第一1月17日,国际乒联官网公布了2023年第三周的世界排名。在最新的世界排名中,有些球员的排名稍有变化。在单打排名中,国乒队员依然占据了前几名的位置。在男单世界排名中,樊振东以772被骂骗钱骗色!决赛现场大闹泰山,吴兴涵忍不了,晒娇妻爱女回应中超球员教练由于曝光度知名度以及影响力比较高,所以总会出现一些负面问题,其中泰山队是中超的龙头俱乐部,自然球队出现的任何问题都会成为众人热议的焦点,哪怕是球队的边缘球员有负面新闻也WWE第1221期Smackdown节目2023年1月13日赛况及精选照片集在令人震惊的SmackDown版本中,萨米扎恩(SamiZayn)和凯文欧文斯(KevinOwens)在血统干预后打了一场无赛,这或许可以让我们深入了解他们与扎恩的关系。此外,Gu这4款高续航电动车,续航都超过200公里,雅迪爱玛都有,怎么选您在阅读前请点击上面的关注二字,后续会第一时间为您提供更多有价值的相关内容,感谢您的支持。电动车为我们的出行提供了极大的方便,如果只是日常代步,电动自行车就足够了,因为这种车型上路港股收评恒生指数跌0。78生物医药保险股下挫,特步国际涨超91月17日港股震荡下跌,截至收盘,港股恒生指数跌0。78,报21577。64点,恒生科技指数跌0。14,报4500。54点,国企指数跌0。49,报7314。04点,红筹指数跌0。6认养一头牛,悬了!作者乐水认养一头牛的IPO之路遭遇拦路虎。2023年1月12日,针对认养一头牛的IPO申请,证监会发布反馈意见,提出48个问题,要求前者就奶源毛利率食品安全等方面进行补充说明。作为光伏首富的几种死法,雷丁汽车创始人应吸取教训撰文维小尼编辑郭郭这是环球零碳的第498篇原创站在风口上,猪都会飞起来。这句话,害死了很多创业者,很多人没有看到后面一句更重要的话,如果没有翅膀,猪早晚要摔下来。比如最近几年,最火储能行业专题报告风光水长,储能迢迢(报告出品方中信证券)国内储能政策加持引规模化发展,消纳需求促多技术并举双碳发展立足新型电力系统建设,新能源转型催化储能成长空间新型电力系统建设需源网荷储一体化发展,储能是各环节的收购推特的利息将到期前世界首富马斯克或无力偿还!CNMO新闻此前不久,马斯克收购推特一事引发了广大网友的关注。而这一事件也是一波三折后终于尘埃落地,马斯克以440亿美元完成此次收购。不过,即便是世界首富,在如此高额的收购费用面前杨倩罕见秀性感,风格大变!沉寂1年曝光率下跌,还能战奥运吗还记得奥运冠军杨倩吗,在获得东京奥运首金之后,她的人气飞速上涨,当时令很多媒体感到震惊,但时间一晃,距离最辉煌的生涯时刻已经过去许久,杨倩已经快1年多未出现在射击场,沉寂这么久,她湖人不受待见?联盟出面支持恩比德,固执里弗斯终开窍在昨日湖人主场对阵76人,最后一个回合湖人手握球权,威少左侧发动进攻强突恩比德失败错失绝杀机会,最终113114不敌76人。但这最后一攻的判罚却出现了极大的争议,通过回看和后面记者
负债突破6万亿,半年血亏800亿,14亿人养不起中国铁路?最近,中国国家铁路集团有限公司总负债终破6万亿元大关,截至2022年上半年国铁集团负债合计6。00万亿元,2022年上半年,国铁集团总收入4856。90亿元,同比减少5。28亏损8经济下行,为什么要救房地产?揭秘房产底层逻辑视频请点击下方链接经济下行,为什么要救房地产?揭秘房产底层逻辑自2021年相继传出恒大泛海控股等地产的爆雷,造成房市恐慌。为了让房地产健康发展呢,各地相继出台了救房市的政策,又是下这一超级小众冷门的专业,你会去学吗?有这么一个听起来很高大上却离我们有点距离的一个专业珠宝设计专业。比起商科理工科人文社科等专业,这个小众且有点冷门的专业同学们可能不太了解。今天小英就从珠宝设计专业的课程构成就业前景VivoX90Pro渲染图,超级微曲屏1英寸主摄,专业影像旗舰再突破近几年,Vivo的表现令人咋舌,彻底改变了高价低配的局面,带来了众多自研黑科技,用户满意度直线上升。虽然更新频率并不是很高,但每一款新机都是精品,并且也加入了折叠屏行列,VivoX粒子物理学的惊喜核子在小原子核子中挑选配对伙伴的方式不同构成原子核的质子和中子经常配对。现在,一项新的高精度实验发现,这些粒子可能会根据原子核的密集程度挑选不同的伙伴。这项工作是在美国能源部的托马斯杰斐逊国家加速器装置进行的。这些发现还四大豪门集体刹车,穆里尼奥成大赢家,击败乌迪内斯,将一骑绝尘穆里尼奥再次荣获意甲月度最佳主教练,这是对罗马队前四场比赛三胜一平的褒奖,但是穆里尼奥的目标可不是月度最佳,他要的是意甲冠军。上一轮比赛,罗马队短暂领跑,结果被亚特兰大反超,只能屈迟到的选择五大联赛转会窗关闭前最后一刻并没有制造重量级的压哨转会,奥巴梅杨回归英超的交易只是强行被推上头版的新闻,但也有些被主流媒体淡化的转会引发了球迷的热议。比如巴洛特利签约锡永,关于浪子C罗转会失败,他的困境才刚刚开始文羊城晚报全媒体记者赵亮晨随着欧洲足球夏季转会窗关闭,C罗的转会悬念终于揭晓在经过长达数月的博弈之后,这位37岁的葡萄牙巨星未能实现转投一家能踢新赛季欧冠的球队的愿望,留在了曼联。到现在才知道,原来天仙刘亦菲已经当妈7年了近日童星李芳淙发微博给刘亦菲庆生,其中称呼刘亦菲为干妈,不禁让人非常好奇,刘亦菲什么时候当妈了?两人究竟有什么渊源?原来两人是在2015年拍摄电影烽火芳菲(又名营救飞虎队)时相识,看了20岁的郝蕾,再看20岁的孙俪,就想问邓超一句你咋想的邓超和孙俪是娱乐圈的恩爱模范夫妻,他们互坑互爱的相处方式也圈粉无数!但大家都知道,在孙俪之前,邓超和郝蕾有过一段撕心裂肺的感情。看了20岁的郝蕾,再看20岁的孙俪,就想问邓超一句你林书豪再就业,不过这次东家不是首钢,而是与冠军总教头联手头条创作挑战赛林书豪成功再就业!不过,他这次的东家并不是首钢队。没办法,首钢队在当前赛季的外援已经被确定下来,他们就是约翰逊与利夫。至于说林书豪?先不说今年的他已经34岁,就是他在