php用正则表达式匹配URL的简单方法
发布:smiling 来源: PHP粉丝网 添加日期:2020-06-23 16:18:11 浏览: 评论:0
在PHP的官网上看到的parse_url()函数的替代方案。结果和parse_url()函数差不多,是使用正则实现的。URI 是 Web上可用的每种资源 - HTML文档、图像、视频片段、程序等 - 由一个通用资源标志符(Uniform Resource Identifier, 简称"URI")进行定位,对象分组:
- ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
- 12 3 4
测试代码如下:
- <?php
- $search = '~^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?~i';
- $url = 'https://www.phpfensi.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.phpfensi.com
- $4 = www.phpfensi.com
- $5 = /pub/ietf/uri/
- $6 = <undefined>
- $7 = <undefined>
- $8 = #Gonn
- $9 = Gonn
- */
- ?>
上面的正则表达式可以获取URL中的任何一部分,下面的代码则简单一些:
- <?php
- // 从 URL 中取得主机名
- preg_match("/^(http:\/\/)?([^\/]+)/i", "https://www.phpfensi.com/index.html", $matches);
- $host = $matches[2];
- // 从主机名中取得后面两段
- preg_match("/[^\.\/]+\.[^\.\/]+$/", $host, $matches);
- echo "domain name is: {$matches[0]}\n";
- ?>
Tags: 正则表达式 匹配URL
相关文章
- ·php正则表达式是什么?(代码实例)(2020-02-25)
- ·php中常见的sql攻击正则表达式汇总(2021-04-24)
- ·PHP中一些可以替代正则表达式函数的字符串操作函数(2021-04-26)
- ·UTF-8正则表达式如何匹配汉字(2021-06-15)
- ·php用户注册信息验证正则表达式(2021-06-26)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)