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加速的eAccelerator dll支持文件打包下载
Sep 30 PHP
10个实用的PHP代码片段
Sep 02 PHP
php中如何判断一个网页请求是ajax请求还是普通请求
Aug 10 PHP
获取URL文件名后缀
Oct 24 PHP
php函数指定默认值方法的小例子
Dec 04 PHP
跟我学Laravel之安装Laravel
Oct 15 PHP
CodeIgniter配置之SESSION用法实例分析
Jan 19 PHP
php读取torrent种子文件内容的方法(测试可用)
May 03 PHP
Yii2框架实现注册和登录教程
Sep 30 PHP
PHP实现的支付宝支付功能示例
Mar 26 PHP
php设计模式之代理模式分析【星际争霸游戏案例】
Mar 23 PHP
PHP数组Key强制类型转换实现原理解析
Sep 01 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
全国FM电台频率大全 - 26 西藏自治区
2020/03/11 无线电
PHP构造函数与析构函数用法示例
2016/09/28 PHP
Laravel网站打开速度优化的方法汇总
2017/07/16 PHP
thinkPHP中钩子的使用方法实例分析
2017/11/16 PHP
phpStorm2020 注册码
2020/09/17 PHP
基于JQuery实现异步刷新的代码(转载)
2011/03/29 Javascript
Javascript delete 引用类型对象
2013/11/01 Javascript
JavaScript+CSS实现仿天猫侧边网页菜单效果
2015/08/25 Javascript
jQuery插件autocomplete使用详解
2017/02/04 Javascript
JavaScript实现简单图片轮播效果
2017/08/21 Javascript
JavaScript实现为事件句柄绑定监听函数的方法分析
2017/11/14 Javascript
vue鼠标移入添加class样式,鼠标移出去除样式(active)实现方法
2018/08/22 Javascript
世界上最短的数字判断js代码
2019/09/09 Javascript
微信小程序收藏功能的实现代码
2020/06/19 Javascript
解决echarts图表使用v-show控制图表显示不全的问题
2020/07/19 Javascript
vue-路由精讲 二级路由和三级路由的作用
2020/08/06 Javascript
python中xrange和range的区别
2014/05/13 Python
Python多线程编程之多线程加锁操作示例
2018/09/06 Python
Python学习笔记之抓取某只基金历史净值数据实战案例
2019/06/03 Python
Python 类属性与实例属性,类对象与实例对象用法分析
2019/09/20 Python
使用Python的turtle模块画国旗
2019/09/24 Python
python创建n行m列数组示例
2019/12/02 Python
通过实例解析Python调用json模块
2019/12/11 Python
如何将你的应用迁移到Python3的三个步骤
2019/12/22 Python
python入门之基础语法学习笔记
2020/02/08 Python
Python3 集合set入门基础
2020/02/10 Python
香蕉共和国Banana Republic官网:美国GAP旗下偏贵族风格服饰品牌
2016/11/21 全球购物
美国羽绒床上用品第一品牌:Pacific Coast
2018/08/25 全球购物
美国用餐电影院:Alamo Drafthouse Cinema
2020/01/23 全球购物
运动会开幕式邀请函
2014/01/22 职场文书
领导班子自我剖析材料
2014/08/16 职场文书
先进工作者事迹材料
2014/12/23 职场文书
导游词之江苏同里古镇
2019/11/18 职场文书
如何使用JavaScript策略模式校验表单
2021/04/29 Javascript
Python matplotlib 利用随机函数生成变化图形
2022/04/26 Python
使用opencv-python如何打开USB或者笔记本前置摄像头
2022/06/21 Python