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伪造referer突破网盘禁止外连的代码
Jun 15 PHP
php的ajax框架xajax入门与试用介绍
Dec 19 PHP
PHP运行出现Notice : Use of undefined constant 的完美解决方案分享
Mar 05 PHP
基于xcache的配置与使用详解
Jun 18 PHP
PHP防止跨域提交表单
Nov 01 PHP
php中cookie的使用方法
Mar 29 PHP
PHP提交表单失败后如何保留已经填写的信息
Jun 20 PHP
20个2014年最优秀的PHP框架回顾
Oct 22 PHP
php格式输出文件var_export函数实例
Nov 15 PHP
PHP+jquery+ajax实现即时聊天功能实例
Dec 23 PHP
Laravel学习教程之本地化模块
Aug 18 PHP
php获取用户真实IP和防刷机制的实例代码
Nov 28 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
几种显示数据的方法的比较
2006/10/09 PHP
php smarty函数扩展
2010/03/15 PHP
PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
2014/06/12 PHP
ThinkPHP调用百度翻译类实现在线翻译
2014/06/26 PHP
php中 ob_start等函数截取标准输出的方法
2015/06/22 PHP
PHP调用微博接口实现微博登录的方法示例
2018/09/22 PHP
JavaScript调用堆栈及setTimeout使用方法深入剖析
2013/02/16 Javascript
jQuery的选择器中的通配符使用介绍
2014/03/20 Javascript
从零学jquery之如何使用回调函数
2014/05/16 Javascript
javaScript中两个等于号和三个等于号之间的区别介绍
2014/06/27 Javascript
JS实现点击按钮后框架内载入不同网页的方法
2015/05/05 Javascript
jquery实现的代替传统checkbox样式插件
2015/06/19 Javascript
JavaScript中innerHTML,innerText,outerHTML的用法及区别
2015/09/01 Javascript
JS动态添加iframe的代码
2015/09/14 Javascript
JS创建事件的三种方法(实例代码)
2016/05/12 Javascript
bootstrap提示标签、提示框实现代码
2016/12/28 Javascript
jQuery自定义多选下拉框效果
2017/06/19 jQuery
vue.js框架实现表单排序和分页效果
2017/08/09 Javascript
Vue2.0系列之过滤器的使用
2018/03/01 Javascript
JS动画实现回调地狱promise的实例代码详解
2018/11/08 Javascript
Vue学习之axios的使用方法实例分析
2020/01/06 Javascript
安装dbus-python的简要教程
2015/05/05 Python
Python基于property实现类的特性操作示例
2018/06/15 Python
python 对类的成员函数开启线程的方法
2019/01/22 Python
django基础学习之send_mail功能
2019/08/07 Python
Python3实现个位数字和十位数字对调, 其乘积不变
2020/05/03 Python
pytorch 限制GPU使用效率详解(计算效率)
2020/06/27 Python
Django filter动态过滤与排序实现过程解析
2020/11/26 Python
小程序瀑布流解决左右两边高度差距过大的问题
2019/02/20 HTML / CSS
毕业生自荐书
2014/02/03 职场文书
2015年采购工作总结
2015/04/10 职场文书
民事调解书范文
2015/05/20 职场文书
《詹天佑》教学反思
2016/02/20 职场文书
2016年主题党日活动总结
2016/04/05 职场文书
2019最新版火锅店的创业计划书 !
2019/07/12 职场文书
zabbix自定义监控nginx状态实现过程
2021/11/01 Servers