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实现分页的一个示例
Oct 09 PHP
PHP 正则表达式之正则处理函数小结(preg_match,preg_match_all,preg_replace,preg_split)
Oct 05 PHP
浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)
Jun 29 PHP
discuz免激活同步登入代码修改方法(discuz同步登录)
Dec 24 PHP
php结合js实现点击超链接执行删除确认操作
Oct 31 PHP
php动态生成版权所有信息的方法
Mar 24 PHP
Yii+upload实现AJAX上传图片的方法
Jul 13 PHP
PHP云打印类完整示例
Oct 15 PHP
PHP常用算法和数据结构示例(必看篇)
Mar 15 PHP
ThinkPHP 3.2.2实现事务操作的方法
May 05 PHP
如何利用预加载优化Laravel Model查询详解
Aug 11 PHP
详解php命令注入攻击
Apr 06 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
用libtemplate实现静态网页生成
2006/10/09 PHP
PHP获取指定函数定义在哪个文件中以及其所在的行号实例
2014/05/08 PHP
Zend Framework教程之资源(Resources)用法实例详解
2016/03/14 PHP
详谈PHP程序Laravel 5框架的优化技巧
2016/07/18 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
原生javascript图片自动或手动切换示例附演示源码
2013/09/04 Javascript
三种检测iPhone/iPad设备方向的方法
2014/04/23 Javascript
js检验密码强度(低中高)附图
2014/06/05 Javascript
js使用for循环及if语句判断多个一样的name
2014/09/09 Javascript
jQuery的图片滑块焦点图插件整理推荐
2014/12/07 Javascript
javascript实现判断鼠标的状态
2015/07/10 Javascript
JavaScript数据库TaffyDB用法实例分析
2015/07/27 Javascript
基于jquery实现多级菜单效果
2017/07/25 jQuery
vue+elementUI 复杂表单的验证、数据提交方案问题
2019/06/24 Javascript
echarts统计x轴区间的数值实例代码详解
2019/07/07 Javascript
如何自定义微信小程序tabbar上边框的颜色
2019/07/09 Javascript
JavaScript表格隔行变色和Tab标签页特效示例【附jQuery版】
2019/07/11 jQuery
python中enumerate函数遍历元素用法分析
2016/03/11 Python
python3使用urllib模块制作网络爬虫
2016/04/08 Python
centos 安装python3.6环境并配置虚拟环境的详细教程
2018/02/22 Python
对pandas将dataframe中某列按照条件赋值的实例讲解
2018/11/29 Python
python+opencv实现阈值分割
2018/12/26 Python
python读写文件write和flush的实现方式
2020/02/21 Python
Python 爬取淘宝商品信息栏目的实现
2021/02/06 Python
python 如何在测试中使用 Mock
2021/03/01 Python
CSS3中box-shadow的用法介绍
2015/07/15 HTML / CSS
新加坡最佳婴儿用品店:Mamahood.com.sg
2018/08/26 全球购物
Big Green Smile法国:领先的英国有机和天然产品在线商店
2021/01/02 全球购物
计算机专业毕业生自荐信
2013/12/31 职场文书
铁路工务反思材料
2014/02/07 职场文书
活动总结报告格式
2014/05/09 职场文书
升学宴演讲稿
2014/09/01 职场文书
劳动争议和解协议书范本
2014/11/20 职场文书
平安家庭事迹材料
2014/12/20 职场文书
Vue实现tab导航栏并支持左右滑动功能
2021/06/28 Vue.js