php用正则表达式匹配URL的简单方法


Posted in PHP onNovember 12, 2013

在PHP的官网上看到的parse_url()函数的替代方案。结果和parse_url()函数差不多,是使用正则实现的。URI 是 Web上可用的每种资源 - HTML文档、图像、视频片段、程序等 - 由一个通用资源标志符(Uniform Resource Identifier, 简称"URI")进行定位。 对象分组:

^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
12            3  4       

测试代码如下:
<?php
$search = '~^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?~i';
$url = 'https://3water.com/pub/ietf/uri/#Gonn';
$url = trim($url);
preg_match_all($search, $url ,$rr);
printf("<p>输出URL数据为:</p><pre>%s</pre>\n",var_export( $rr ,TRUE));
/*
各分组如下
      $1 = http:
      $2 = http
      $3 = //www.nowamagic.net
      $4 = www.nowamagic.net
      $5 = /pub/ietf/uri/
      $6 = <undefined>
      $7 = <undefined>
      $8 = #Gonn
      $9 = Gonn
*/
?>

上面的正则表达式可以获取URL中的任何一部分,下面的代码则简单一些:
<?php 
// 从 URL 中取得主机名 
preg_match("/^(http:\/\/)?([^\/]+)/i", "https://3water.com/index.html", $matches); 
$host = $matches[2]; 
// 从主机名中取得后面两段 
preg_match("/[^\.\/]+\.[^\.\/]+$/", $host, $matches); 
echo "domain name is: {$matches[0]}\n"; 
?>
PHP 相关文章推荐
PHP与MySQL交互使用详解
Oct 09 PHP
小偷PHP+Html+缓存
Dec 20 PHP
使用TinyButStrong模板引擎来做WEB开发
Mar 16 PHP
smarty section简介与用法分析
Oct 03 PHP
dedecms 批量提取第一张图片最为缩略图的代码(文章+软件)
Oct 29 PHP
探讨PHP调用时间格式的参数详解
Jun 06 PHP
Codeigniter注册登录代码示例
Jun 12 PHP
PHP实现绘制3D扇形统计图及图片缩放实例
Oct 01 PHP
检测codeigniter脚本消耗内存情况的方法
Mar 21 PHP
PHP实现的迷你漂流瓶
Jul 29 PHP
Symfony2实现从数据库获取数据的方法小结
Mar 18 PHP
PHP实现的折半查找算法示例
Dec 19 PHP
CodeIgniter基本配置详细介绍
Nov 12 #PHP
PHP URL路由类实例
Nov 12 #PHP
PHP set_error_handler()函数使用详解(示例)
Nov 12 #PHP
php inc文件使用的风险和注意事项
Nov 12 #PHP
php防止SQL注入详解及防范
Nov 12 #PHP
php session劫持和防范的方法
Nov 12 #PHP
php后门URL的防范
Nov 12 #PHP
You might like
收听困难?教您超简便短波广播抗干扰方法!
2021/03/01 无线电
Discuz板块横排显示图片的实现方法
2007/05/28 PHP
php流量统计功能的实现代码
2012/09/29 PHP
PHP对象递归引用造成内存泄漏分析
2014/08/28 PHP
php获取当月最后一天函数分享
2015/02/02 PHP
php阿拉伯数字转中文人民币大写
2015/12/21 PHP
Javascript优化技巧(文件瘦身篇)
2008/01/28 Javascript
JS 自动安装exe程序
2008/11/30 Javascript
jquery nth-child()选择器的简单应用
2010/07/10 Javascript
jQuery cdn使用介绍
2013/05/08 Javascript
jquery easyui 对于开始时间小于结束时间的判断示例
2014/03/22 Javascript
深入理解JavaScript的React框架的原理
2015/07/02 Javascript
jQuery实现滚动切换的tab选项卡效果代码
2015/08/26 Javascript
如何解决谷歌浏览器下jquery无法获取图片的尺寸
2015/09/10 Javascript
详解JavaScript基于面向对象之创建对象(1)
2015/12/10 Javascript
详解express与koa中间件模式对比
2017/08/07 Javascript
Vue中&quot;This dependency was not found&quot;问题的解决方法
2018/06/19 Javascript
如何实现双向绑定mvvm的原理实现
2019/05/28 Javascript
VUE项目初建和常见问题总结
2019/09/12 Javascript
JS判断数组四种实现方法详解
2020/06/29 Javascript
解决vant-UI库修改样式无效的问题
2020/11/03 Javascript
Python正则表达式实现截取成对括号的方法
2017/01/06 Python
Python3.6+selenium2.53.6自动化测试_读取excel文件的方法
2019/09/06 Python
Python中全局变量和局部变量的理解与区别
2021/02/07 Python
HTML5 Canvas实现玫瑰曲线和心形图案的代码实例
2014/04/10 HTML / CSS
世界上最大的家庭自动化公司:Smarthome
2017/12/20 全球购物
业务经理的岗位职责
2013/11/16 职场文书
大学生的应聘自我评价
2013/12/13 职场文书
药学职务聘任书
2014/03/29 职场文书
餐厅筹备计划书
2014/04/25 职场文书
勤奋学习演讲稿
2014/05/10 职场文书
酒店员工培训方案
2014/06/02 职场文书
四风问题自我剖析材料
2014/10/07 职场文书
幼儿园大班教师个人工作总结
2015/02/05 职场文书
高三毕业感言
2015/07/30 职场文书
微信小程序实现轮播图指示器
2022/06/25 Javascript