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脚本的10个技巧(5)
Oct 09 PHP
如何将一个表单同时提交到两个地方处理
Oct 09 PHP
利用 window_onload 实现select默认选择
Oct 09 PHP
PHP取得一个类的属性和方法的实现代码
May 22 PHP
解析PHP强制转换类型及远程管理插件的安全隐患
Jun 30 PHP
php获取URL中带#号等特殊符号参数的解决方法
Sep 02 PHP
PHP图形操作之Jpgraph学习笔记
Dec 25 PHP
PHP的PDO常用类库实例分析
Apr 07 PHP
最新最全PHP生成制作验证码代码详解(推荐)
Jun 12 PHP
基于PHP实现用户注册登录功能
Oct 14 PHP
PHP面向对象程序设计之类与反射API详解
Dec 02 PHP
PHP设计模式之适配器模式(Adapter)原理与用法详解
Dec 12 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/03/03 PHP
php中switch与ifelse的效率区别及适用情况分析
2015/02/12 PHP
PHP如何将log信息写入服务器中的log文件
2015/07/29 PHP
基于PHP的登录和注册的功能的实现
2020/08/06 PHP
类之Prototype.js学习
2007/06/13 Javascript
JQuery 1.6发布 性能提升,同时包含大量破坏性变更
2011/05/10 Javascript
文本框根据输入内容自适应高度的代码
2011/10/24 Javascript
js汉字转拼音实现代码
2013/02/06 Javascript
Node.js中AES加密和其它语言不一致问题解决办法
2014/03/10 Javascript
jquery实现勾选复选框触发事件给input赋值
2015/02/01 Javascript
浅谈Nodejs观察者模式
2015/10/13 NodeJs
批量下载对路网图片并生成html的实现方法
2016/06/07 Javascript
最实用的jQuery分页插件
2016/10/09 Javascript
浅析Jquery操作select
2016/12/13 Javascript
JavaScript实现选中文字提示新浪微博分享效果
2017/06/15 Javascript
vue router下的html5 history在iis服务器上的设置方法
2017/10/18 Javascript
php中and 和 &amp;&amp;出坑指南
2018/07/13 Javascript
js实现的格式化数字和金额功能简单示例
2019/07/30 Javascript
JavaScript中如何调用Java方法
2020/09/16 Javascript
Vue实现boradcast和dispatch的示例
2020/11/13 Javascript
netbeans7安装python插件的方法图解
2013/12/24 Python
python计算书页码的统计数字问题实例
2014/09/26 Python
使用python获取(宜宾市地震信息)地震信息
2019/06/20 Python
使用python将excel数据导入数据库过程详解
2019/08/27 Python
pycharm 关掉syntax检查操作
2020/06/09 Python
python如何实现读取并显示图片(不需要图形界面)
2020/07/08 Python
Python 虚拟环境工作原理解析
2020/12/24 Python
微软新西兰官方网站:Microsoft New Zealand
2018/08/17 全球购物
世界上最大的冷却器制造商:Igloo Coolers
2019/07/23 全球购物
经典公益广告词
2014/03/13 职场文书
四年级学生评语大全
2014/04/21 职场文书
申报优秀教师材料
2014/12/16 职场文书
JS 4个超级实用的小技巧 提升开发效率
2021/10/05 Javascript
【海涛解说】史上最给力比赛,挑战DOTA极限
2022/04/01 DOTA
MySQL池化框架学习接池自定义
2022/07/23 MySQL
volatile保证可见性及重排序方法
2022/08/05 Java/Android