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无刷新上传文件实现代码
Sep 19 PHP
使用cookie实现统计访问者登陆次数
Jun 08 PHP
php后台如何避免用户直接进入方法实例
Oct 15 PHP
PHP把JPEG图片转换成Progressive JPEG的方法
Jun 30 PHP
php+html5使用FormData对象提交表单及上传图片的方法
Feb 11 PHP
PHP查询快递信息的方法
Mar 07 PHP
php计算整个mysql数据库大小的方法
Jun 19 PHP
举例详解PHP脚本的测试方法
Aug 05 PHP
PHP微信模板消息操作示例
Jun 29 PHP
php实现解析xml并生成sql语句的方法
Feb 03 PHP
Laravel框架运行出错提示RuntimeException No application encryption key has been specified.解决方法
Apr 02 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
Mar 24 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
重置版战役片段
2020/04/09 魔兽争霸
php5.3 注意事项说明
2013/07/01 PHP
php进程间通讯实例分析
2016/07/11 PHP
PHP命名空间namespace及use的简单用法分析
2018/08/03 PHP
PHP序列化的四种实现方法与横向对比
2018/11/29 PHP
Laravel中GraphQL接口请求频率实战记录
2020/09/01 PHP
读jQuery之七 判断点击了鼠标哪个键的代码
2011/06/21 Javascript
基于jquery编写的横向自适应幻灯片切换特效的实例代码
2013/08/06 Javascript
简体中文转换繁体中文(实现代码)
2013/12/25 Javascript
js实现图片拖动改变顺序附图
2014/05/13 Javascript
jQuery仿Flash上下翻动的中英文导航菜单实例
2015/03/10 Javascript
Jquery Ajax Error 调试错误的技巧
2015/11/20 Javascript
js输出数据精确到小数点后n位代码
2016/07/02 Javascript
JavaScript判断数组是否存在key的简单实例
2016/08/03 Javascript
Bootstrap中的Dropdown下拉菜单更改为悬停(hover)触发
2016/08/31 Javascript
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
2016/12/14 Javascript
js实现移动端轮播图效果
2020/12/09 Javascript
详解在vue-cli中使用路由
2017/09/25 Javascript
详解vue.js数据传递以及数据分发slot
2018/01/20 Javascript
Vue 前端实现登陆拦截及axios 拦截器的使用
2019/07/17 Javascript
[03:42]2016国际邀请赛中国区预选赛首日现场玩家采访
2016/06/26 DOTA
python2.7+selenium2实现淘宝滑块自动认证功能
2018/02/24 Python
Python内置函数reversed()用法分析
2018/03/20 Python
对Python中列表和数组的赋值,浅拷贝和深拷贝的实例讲解
2018/06/28 Python
django Serializer序列化使用方法详解
2018/10/16 Python
Django操作session 的方法
2020/03/09 Python
python中 _、__、__xx__()区别及使用场景
2020/06/30 Python
世界上最大的在线汽车租赁预订平台:Rentalcars.com(支持中文)
2018/10/12 全球购物
大学毕业生文采飞扬的自我鉴定
2013/12/03 职场文书
竞选学生会演讲稿
2014/04/25 职场文书
合伙经营协议书范本
2014/09/13 职场文书
网络营销计划
2015/01/17 职场文书
房地产销售主管岗位职责
2015/02/13 职场文书
导游词之西递宏村
2019/12/10 职场文书
浅谈sql_@SelectProvider及使用注意说明
2021/08/04 Java/Android
Python安装使用Scrapy框架
2022/04/12 Python