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 相关文章推荐
phpfans留言版用到的install.php
Jan 04 PHP
在php MYSQL中插入当前时间
Apr 06 PHP
php中json_encode中文编码问题分析
Sep 13 PHP
如何使用PHP计算上一个月的今天
May 23 PHP
php中return的用法实例分析
Feb 28 PHP
分享PHP函数实现数字与文字分页代码
Jul 28 PHP
PHP实现搜索地理位置及计算两点地理位置间距离的实例
Jan 08 PHP
CI框架(CodeIgniter)实现的数据库增删改查操作总结
May 23 PHP
laravel5实现微信第三方登录功能
Dec 06 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
Dec 20 PHP
PHP中的输出echo、print、printf、sprintf、print_r和var_dump的示例代码
Dec 01 PHP
laravel添加角色和模糊搜索功能的实现代码
Jun 22 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/01/08 PHP
使用PHP把HTML生成PDF文件的几个开源项目介绍
2014/11/17 PHP
PHP获取远程图片并保存到本地的方法
2015/05/12 PHP
CI框架常用经典操作类总结(路由,伪静态,分页,session,验证码等)
2016/11/21 PHP
thinkphp分页集成实例
2017/07/24 PHP
Laravel向公共模板赋值方法总结
2019/06/25 PHP
jQuery实现等比例缩放大图片让大图片自适应页面布局
2013/10/16 Javascript
JS Loading功能的简单实现
2013/11/29 Javascript
Jquery 切换不同图片示例代码
2013/12/05 Javascript
jQuery实现的进度条效果
2015/07/15 Javascript
详解javascript高级定时器
2015/12/31 Javascript
JS常见问题之为什么点击弹出的i总是最后一个
2016/01/05 Javascript
JavaScript定义函数_动力节点Java学院整理
2017/06/27 Javascript
vue2.0中vue-cli实现全选、单选计算总价格的实例代码
2017/07/18 Javascript
Node.js 的模块知识汇总
2017/08/16 Javascript
Chrome调试折腾记之JS断点调试技巧
2017/09/11 Javascript
使用vue的v-for生成table并给table加上序号的实例代码
2017/10/27 Javascript
jQuery实现的简单前端搜索功能示例
2017/10/28 jQuery
详解使用webpack打包编写一个vue-toast插件
2017/11/08 Javascript
如何获取TypeScript的声明文件.d.ts
2018/05/01 Javascript
Vue 实现html中根据类型显示内容
2019/10/28 Javascript
javascript实现异形滚动轮播
2019/11/28 Javascript
nodejs对mongodb数据库的增加修删该查实例代码
2020/01/05 NodeJs
安装Python和pygame及相应的环境变量配置(图文教程)
2017/06/04 Python
Python爬虫实现(伪)球迷速成
2018/06/10 Python
python利用tkinter实现屏保
2019/07/30 Python
python 实现提取log文件中的关键句子,并进行统计分析
2019/12/24 Python
基于python SMTP实现自动发送邮件教程解析
2020/06/02 Python
HTML5 Canvas的常用线条属性值总结
2016/03/17 HTML / CSS
Wilson体育用品官网:美国著名运动器材品牌
2019/05/12 全球购物
中文系学生自荐信范文
2013/11/13 职场文书
公司员工检讨书
2014/02/08 职场文书
孙振耀退休感言
2015/08/01 职场文书
办公室规章制度范本
2015/08/04 职场文书
团队拓展训练心得体会
2016/01/12 职场文书
新手必备之MySQL msi版本下载安装图文详细教程
2021/05/21 MySQL