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 相关文章推荐
使用php4加速网络传输
Oct 09 PHP
php中XMLHttpRequest(Ajax)不能设置自定义的Referer的解决方法
Nov 26 PHP
第二章 PHP入门基础之php代码写法
Dec 30 PHP
PHP提交表单失败后如何保留已经填写的信息
Jun 20 PHP
ThinkPHP模板之变量输出、自定义函数与判断语句用法
Nov 01 PHP
CentOS安装php v8js教程
Feb 26 PHP
php判断输入是否是纯数字,英文,汉字的方法
Mar 05 PHP
PHP日期函数date格式化UNIX时间的方法
Mar 19 PHP
php实现将Session写入数据库
Jul 26 PHP
smarty高级特性之过滤器的使用方法
Dec 25 PHP
Yii2 输出xml格式数据的方法
May 03 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
Jul 26 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
SSI指令
2006/11/25 PHP
一步一步学习PHP(3) php 函数
2010/02/15 PHP
php实现保存submit内容之后禁止刷新
2014/03/19 PHP
PHP保存带BOM文件的方法
2015/02/12 PHP
PHP安装BCMath扩展的方法
2019/02/13 PHP
使用composer 安装 laravel框架的方法图文详解
2019/08/02 PHP
面向对象的Javascript之一(初识Javascript)
2012/01/20 Javascript
js调用webservice中的方法实现思路及代码
2013/02/25 Javascript
JS操作数据库的实例代码
2013/10/17 Javascript
table行随鼠标移动变色示例
2014/05/07 Javascript
javascript解决IE6下hover问题的方法
2015/07/28 Javascript
基于Bootstrap重置输入框内容按钮插件
2016/05/12 Javascript
浅谈js图片前端预览之filereader和window.URL.createObjectURL
2016/06/30 Javascript
js常用DOM方法详解
2017/02/04 Javascript
简单实现js进度条加载效果
2020/03/25 Javascript
详细分析单线程JS执行问题
2017/11/22 Javascript
JS小球抛物线轨迹运动的两种实现方法详解
2017/12/20 Javascript
JavaScript实现计算多边形质心的方法示例
2018/01/31 Javascript
使用Vue 实现滑动验证码功能
2019/06/27 Javascript
小程序中设置缓存过期的实现方法
2020/01/14 Javascript
vue自定义指令限制输入框输入值的步骤与完整代码
2020/08/30 Javascript
解决nuxt 自定义全局方法,全局属性,全局变量的问题
2020/11/05 Javascript
Pycharm学习教程(2) 代码风格
2017/05/02 Python
python更改已存在excel文件的方法
2018/05/03 Python
Python实现决策树C4.5算法的示例
2018/05/30 Python
Python Numpy:找到list中的np.nan值方法
2018/10/30 Python
Python判断变量名是否合法的方法示例
2019/01/28 Python
python实现桌面气泡提示功能
2019/07/29 Python
Django User 模块之 AbstractUser 扩展详解
2020/03/11 Python
微软加拿大官方网站:Microsoft Canada
2019/04/28 全球购物
学校经典推荐信
2013/10/30 职场文书
自荐书范文
2013/12/08 职场文书
函授毕业自我鉴定
2014/02/04 职场文书
人代会简报
2015/07/21 职场文书
python设置 matplotlib 正确显示中文的四种方式
2021/05/10 Python
使用feign服务调用添加Header参数
2021/06/23 Java/Android