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

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武器库)所有,本站允许任何形式的转载/引用文章,但必须同时注明出处。

辽宁义县春节期间文旅活动大戏连台庙趣横生金虎辞旧岁,玉兔迎新春。为了营造浓厚新春氛围,促进县域经济回暖升温,打造冬季旅游新亮点。辽宁义县在春节期间精细策划了义县民俗文化节暨冰雪旅游季活动,小年这天作为本次活动的重头戏义县新春山海大巡游!来深圳东部华侨城欢喜过大年近日,记者从东部华侨城景区获悉,2023年春节东部华侨城景区推出山海迎新春,兔beNo。1主题活动,经典IP流氓兔来袭,在东部华侨城开启一段潮玩的奇妙旅途。大侠谷景区换新颜,红红火九寨沟,原来你的名字是这样来的,真有意思!有一首耳熟能详的赞叹九寨沟美景的歌是这样唱的噢神奇的九寨,人间的天堂,你把那童话的世界,铺满高原,你看那天下的人儿噢,深情向往。关于九寨沟这个名字的由来,有一个美丽的传说相传在很久丘福燕王第一将,靖难第一功,朱棣不杀功臣,为何将他毁家夺爵1402年9月,明成祖朱棣已经登基3个月,准备对靖难之役中的功臣论功行赏,朱能张武郑亨徐忠这些武将全部围在御前,纷纷讲述自己的功劳,生怕朱棣会忘记他们的贡献。然而,此时有一个人,默圆明园寻迹站在失落的大水法面前,几乎没有人可以坦然面对它所映射的那段侵略史。伤怀之余我们不禁假设,如果没有1860年与1900年两次骇世的劫烧事件,集万园精髓于一身,融皇家琳琅于一体的圆明园明朝最怎悲惨一的皇帝明光宗朱常洛到底有多惨?末代皇帝都处在困难时期,大都遭遇意外,尤其是年纪轻轻就不知道如何继承皇位的皇帝。然而,在明朝的历史上,有一位皇帝的下场非常悲惨。他的苦难不是朝廷的没落和外人的折磨,而是皇室造就了他鳌拜从忠臣到权臣,他是康熙立威的牺牲品1642年,皇太极帝去世。崇政殿内,皇长子豪格跟睿亲王多尔衮,还在继续着激烈的的皇位之争。突然,拥有最多支持者的豪格,从大殿内疾步而出。他放弃了皇位的继承权。一时间,所有人都懵了。曹操杀死杨修后,笑问其父杨彪怎么瘦了?杨彪一语已成千古名言杨修之死算的上是三国名场面,杨修死的原因可谓是众说纷纭,有人说是曹操失误所杀,可依我看,这是一个必然事件。有史料记载,杨修死后,曹操曾问他的父亲杨彪怎么瘦了。其中的感情或许是嘲讽也宰相刘罗锅刘墉简介创作灵感历史我在头搞创作刘墉(17191804),字崇如,号石庵,还有另外青原香岩东武穆庵溟华日观峰道长等字体大小,清朝书法家思想家。山东高密县逄戈庄人(原属诸城市),籍贯江苏徐州楚汉之争,两军大战于汉中,刘邦为何能在汉中之战中一举击败项羽公元前年,华夏大地上爆发了以陈胜吴广领导的秦末农民大起义,这次起义给了摇摇欲坠的秦王朝最后一击,彻底推翻了秦王朝的残暴统治。农民起义的锋火呈星火燎原之势,在各地蔓延,全国范围内出现孟小冬是如何和杜月笙走到一起的?话说我的读者私下给我留言,问我是否可以发表一些野史传奇类的文章。其实本平台一开始的定位,就是文学(包括民间故事)文化和历史基础上,探讨一些其他雅俗共赏的内容。因此,也是传奇类内容当
国庆宝妈带宝宝去哪儿玩?来听听这位宝妈的心声单身时,一个人想去哪就去哪,随时都能来一场说走就走的旅行,背着小包去哪儿都可以。结婚后,两个人想去的地方多了,出去玩也有伴了,但是出去玩的心却没有了,只想宅在家里,过两人世界。两人如何预防宝宝的高原红很多小宝宝,出生没多久,小脸蛋不是红红的就是长湿疹,其主要原因还是小宝宝的皮肤太嫩了,皮肤不能适应外界的温差,风吹等因素。那么小Baby的红脸蛋要怎么护肤呢?1保持皮肤清洁干爽,选窗边的小豆豆这本书在之前给孩子买绘本的过程中,无数次看到有人推荐,但顾虑着它是一本纯文字性的书籍,孩子还暂时没法接受,所以一直添加着收藏,未曾购买。受单位上一位同事的馈赠,偶然得到了这本书,受宝宝都爱投降睡,别强行把胳膊塞被窝了,这5种姿势才须纠正自从有了娃,我们永远将孩子的安全和健康放在第一位。新手爸妈面对新生宝宝,心里更是像绷着一根弦,唯恐自己哪里照顾不周,导致宝宝成长出现问题。即便宝宝睡着了,我们的警惕心依然不减。大家Heaven成为了北美Y2K社交名片?1984年,仍在帕森斯就读的MarcJacobs,开设店铺JacobsDuffyDesigns,发售一些与当时纽约格格不入的设计,摇滚T恤廉价手袋,浮夸饰品当时还未被定义的街头艺术英女王时尚穿搭大有玄机,尽显社交智慧!谁能想到手袋用来打暗号英女王时尚造型一路潮到老,穿搭大有玄机,谁能想到黑手袋是用来给手下打暗号的呢?红橙黄绿蓝腚紫,七彩色卡穿上身,她的服饰色彩缤纷又不失优雅,但有些颜色一定不上身,比如,卡其色,也谢绝周末在家给孩子和家人做的大餐我和先生平时工作比较繁忙,单位都有食堂,周一到周五,我们都不在家里开火做饭,所以周末放假在家就想给孩子做顿丰富的大餐犒劳犒劳他们的胃,也让孩子从小就知道家的记忆是什么?妈妈的味道是湖人众将状态良好,首次训练赛大放异彩北京时间2022年9月28日,湖人队开始了他们的第一次训练赛。队内赛打的可是充满能量,各种暴扣,稳稳地三分,展现自己天赋的同时,也给队友带来了获胜的信心。最亮眼的莫过于勒布朗詹姆斯世事只求半称心世事无常生活颠簸,哪有那么多的风花雪月夹杂其中,人生一世生命一场,世事只求半称心即可,何须过多在意今后的岁月模样。其实这人世间种种不顺心和不如意都是真实的人生状态,努力做好自己该做亚坤夜读丨秋村(有声)(节选)蔬菜地里的辣椒,火红火红的一大片,有闻名遐迩的鸡肠子辣椒光皮辣椒,也有最普通的小线椒小圆椒,熟透的辣椒。远远望去,像卷地的云霞,像跳跃的焰火,成为村庄初秋独特而美丽的风景。秋风劲草互相知秋风劲草互相知文张清明(萧月月)秋风劲草互相知,天地绽放淅沥声。一点一泡泥沙溅,季节早已预先喷。吾坐窗前数雨落,惊诧其中浩瀚吞。寄生地球福人类,希望永怀真感恩。不畏恶浊遮望日,早雨