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中使用Oracle数据库(5)
Oct 09 PHP
codeigniter使用技巧批量插入数据实例方法分享
Dec 31 PHP
Linux中用PHP判断程序运行状态的2个方法
May 04 PHP
PHP中new static()与new self()的区别异同分析
Aug 22 PHP
php运行提示:Fatal error Allowed memory size内存不足的解决方法
Dec 17 PHP
PHP文件操作方法汇总
Jul 01 PHP
教你在PHPStorm中配置Xdebug
Jul 27 PHP
从性能方面考虑PHP下载远程文件的3种方法
Dec 29 PHP
php合并数组并保留键值的实现方法
Mar 12 PHP
php面向对象程序设计中self与static的区别分析
May 21 PHP
PHP token验证生成原理实例分析
Jun 05 PHP
thinkphp5.1框架中容器(Container)和门面(Facade)的实现方法分析
Aug 05 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
php上传图片之时间戳命名(保存路径)
2014/08/15 PHP
php中in_array函数用法探究
2014/11/25 PHP
谈谈从phpinfo中能获取哪些值得注意的信息
2017/03/28 PHP
thinkPHP5框架接口写法简单示例
2019/08/05 PHP
JavaScript 函数replace深入了解
2013/03/14 Javascript
javascript中的startWith和endWith的几种实现方法
2013/05/07 Javascript
使用js实现雪花飘落效果
2013/08/26 Javascript
js中typeof的用法汇总
2013/12/12 Javascript
JS实现div居中示例
2014/04/17 Javascript
js加密解密字符串可自定义密码因子
2014/05/13 Javascript
流量统计器如何鉴别C#:WebBrowser中伪造referer
2015/01/07 Javascript
js实现温度计时间样式代码分享
2015/08/21 Javascript
AngularJS实现表单验证功能
2017/01/09 Javascript
js实现百度搜索提示框
2017/02/05 Javascript
vue 2.0 购物车小球抛物线的示例代码
2018/02/01 Javascript
jquery 通过ajax请求获取后台数据显示在表格上的方法
2018/08/08 jQuery
写一个Vue Popup组件
2019/02/25 Javascript
浅谈vue项目用到的mock数据接口的两种方式
2019/10/09 Javascript
javascript canvas封装动态时钟
2020/09/30 Javascript
[47:31]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.12
2020/12/16 DOTA
Python实现带参数与不带参数的多重继承示例
2018/01/30 Python
python读取图片的方式,以及将图片以三维数组的形式输出方法
2019/07/03 Python
Djang的model创建的字段和参数详解
2019/07/27 Python
Python爬虫程序架构和运行流程原理解析
2020/03/09 Python
美国棒球装备和用品商店:Baseball Savings
2018/06/09 全球购物
什么是Assembly(程序集)
2014/09/14 面试题
abstract是什么意思
2012/02/12 面试题
微信营销策划方案
2014/02/24 职场文书
开学典礼演讲稿
2014/05/23 职场文书
小学教师师德师风演讲稿
2014/08/22 职场文书
优秀党务工作者先进事迹材料
2014/12/25 职场文书
正规欠条模板
2015/07/03 职场文书
初三英语教学反思
2016/02/15 职场文书
2019新员工试用期转正工作总结范文
2019/08/21 职场文书
Vue项目中如何封装axios(统一管理http请求)
2021/05/02 Vue.js
mysql在项目中怎么选事务隔离级别
2021/05/25 MySQL