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对字符串的递增运算分析
Aug 08 PHP
php开发过程中关于继承的使用方法分享
Jun 17 PHP
浅析php变量修饰符static的使用
Jun 28 PHP
PHP获取表单所有复选框的值的方法
Aug 28 PHP
php中time()与$_SERVER[REQUEST_TIME]用法区别
Nov 19 PHP
详解PHP实现执行定时任务
Dec 21 PHP
在Win2003(64位)中配置IIS6+PHP5.2.17+MySQL5.5的运行环境
Apr 04 PHP
PHP进程通信基础之信号
Feb 19 PHP
PHP网站自动化配置的实现方法(必看)
May 27 PHP
PHP实现的各类hash算法长度及性能测试实例
Aug 27 PHP
PHP的静态方法与普通方法用法实例分析
Sep 26 PHP
laravel-admin的图片删除实例
Sep 30 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
phpMyAdmin 链接表的附加功能尚未激活的问题
2010/08/01 PHP
php FLEA中二叉树数组的遍历输出
2012/09/26 PHP
php实例分享之通过递归实现删除目录下的所有文件详解
2014/05/15 PHP
5款适合PHP使用的HTML编辑器推荐
2015/07/03 PHP
windows8.1下Apache+Php+MySQL配置步骤
2015/10/30 PHP
Zend Framework基于Command命令行建立ZF项目的方法
2017/02/18 PHP
PDO::inTransaction讲解
2019/01/28 PHP
编辑浪子版表单验证类
2007/05/12 Javascript
javascript Array.prototype.slice使用说明
2010/10/11 Javascript
iframe子父页面调用js函数示例
2013/11/07 Javascript
js获取checkbox值的方法
2015/01/28 Javascript
关于事件mouseover ,mouseout ,mouseenter,mouseleave的区别
2015/10/12 Javascript
深入理解JS函数的参数(arguments)的使用
2016/05/28 Javascript
jQuery修改DOM结构_动力节点Java学院整理
2017/07/05 jQuery
JS实现显示当前日期的实例代码
2018/07/03 Javascript
vue+axios+promise实际开发用法详解
2018/10/15 Javascript
element ui table(表格)实现点击一行展开功能
2018/12/04 Javascript
利用React Router4实现的服务端直出渲染(SSR)
2019/01/07 Javascript
微信小程序实现上传照片代码实例解析
2020/08/04 Javascript
谈谈python中GUI的选择
2018/03/01 Python
python自动化生成IOS的图标
2018/11/13 Python
python将list转为matrix的方法
2018/12/12 Python
python使用zip将list转为json的方法
2018/12/31 Python
python redis 批量设置过期key过程解析
2019/11/26 Python
Python面向对象封装操作案例详解 II
2020/01/02 Python
利用pyecharts读取csv并进行数据统计可视化的实现
2020/04/17 Python
Python实现捕获异常发生的文件和具体行数
2020/04/25 Python
用python对excel进行操作(读,写,修改)
2020/12/25 Python
移动端适配 使px自动转换rem
2019/08/26 HTML / CSS
美国环保婴儿用品公司:The Honest Company
2017/11/23 全球购物
《放小鸟》教学反思
2014/04/20 职场文书
新闻编辑专业自荐信
2014/07/02 职场文书
年度安全生产目标责任书
2014/07/23 职场文书
判缓刑人员个人思想汇报
2014/10/10 职场文书
党性分析自查总结
2014/10/14 职场文书
MySQL安装后默认自带数据库的作用详解
2021/04/27 MySQL