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 30 PHP
PHP+ACCESS 文章管理程序代码
Jun 21 PHP
浅析php中常量,变量的作用域和生存周期
Aug 10 PHP
PHP获取浏览器信息类和客户端地理位置的2个方法
Apr 24 PHP
微信支付开发教程(一)微信支付URL配置
May 28 PHP
服务器上配置PHP运行环境教程
Feb 12 PHP
ThinkPHP中order()使用方法详解
Apr 19 PHP
PHP实现的多文件上传类及用法示例
May 06 PHP
php组合排序简单实现方法
Oct 15 PHP
[原创]PHP正则删除html代码中a标签并保留标签内容的方法
May 23 PHP
PHP lcfirst()函数定义与用法
Mar 08 PHP
PHP遍历数组的6种方式总结
Nov 17 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 file_exists问题杂谈
2012/05/07 PHP
根据中文裁减字符串函数的php代码
2013/12/03 PHP
PHP CURL获取返回值的方法
2014/05/04 PHP
PHP文件上传问题汇总(文件大小检测、大文件上传处理)
2015/12/24 PHP
跨域表单提交状态的变相判断代码
2009/11/12 Javascript
Jquery插件之打造自定义的select标签
2011/11/30 Javascript
JS中toFixed()方法引起的问题如何解决
2012/11/20 Javascript
nodejs获取本机内网和外网ip地址的实现代码
2014/06/01 NodeJs
用js提交表单解决一个页面有多个提交按钮的问题
2014/09/01 Javascript
简介JavaScript中的sub()方法的使用
2015/06/08 Javascript
AngularJS中的指令全面解析(必看)
2016/05/20 Javascript
Node.js服务器环境下使用Mock.js拦截AJAX请求的教程
2016/05/23 Javascript
AngularJS基础 ng-srcset 指令简单示例
2016/08/03 Javascript
JavaScript String(字符串)对象的简单实例(推荐)
2016/08/31 Javascript
jQuery的$.extend 浅拷贝与深拷贝
2017/03/08 Javascript
JS身份证信息验证正则表达式
2017/06/12 Javascript
JavaScript生成指定范围的时间列表
2018/03/19 Javascript
vue-cli3搭建项目的详细步骤
2018/12/05 Javascript
nodejs中方法和模块用法示例
2018/12/24 NodeJs
比较详细Python正则表达式操作指南(re使用)
2008/09/06 Python
Django卸载之后重新安装的方法
2017/03/15 Python
python: 判断tuple、list、dict是否为空的方法
2018/10/22 Python
基于python指定包的安装路径方法
2018/10/27 Python
centos 安装Python3 及对应的pip教程详解
2019/06/28 Python
python3 requests库实现多图片爬取教程
2019/12/18 Python
css3动画效果抖动解决方法
2018/09/03 HTML / CSS
zooplus波兰:在线宠物店
2019/07/21 全球购物
澳大利亚在线高跟鞋商店:Shoe Me
2019/11/19 全球购物
美国艺术和工艺品商店:Hobby Lobby
2020/12/09 全球购物
澳大利亚网上书店:QBD
2021/01/09 全球购物
学校运动会开幕演讲稿
2014/01/04 职场文书
学习方法演讲稿
2014/05/10 职场文书
民间借贷协议书范本
2014/10/01 职场文书
加强作风建设演讲稿
2014/10/24 职场文书
任命书标准格式
2015/03/02 职场文书
MySQL COUNT函数的使用与优化
2021/05/10 MySQL