Chinaunix首页 | 论坛 | 博客
  • 博客访问: 463700
  • 博文数量: 141
  • 博客积分: 211
  • 博客等级: 入伍新兵
  • 技术积分: 1049
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-17 16:25
个人简介

如此经年,望尽千帆。

文章分类

全部博文(141)

文章存档

2014年(73)

2013年(65)

2012年(3)

我的朋友

分类: PHP

2014-04-08 07:15:03

使用匹配URL的简单方法,提供测试代码。

在的官网上看到的parse_url()函数的替代方案。
结果和parse_url()函数差不多,是使用正则实现的。
URI 是 Web上可用的每种资源 - HTML文档、图像、视频片段、程序等 - 由一个通用资源标志符(Uniform Resource Identifier, 简称"URI")进行定位。 对象分组:
^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
12            3  4        

测试代码:

  1. <?php
  2. $search = '~^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?~i';
  3. $url = '';
  4. $url = trim($url);
  5. preg_match_all($search, $url ,$rr);
  6. printf("

    输出URL数据为:

    %s
    \n"
    ,var_export( $rr ,TRUE));
  7. /*
  8. 各分组如下
  9.       $1 = http:
  10.       $2 = http
  11.       $3 = //
  12.       $4 =
  13.       $5 = /pub/ietf/uri/
  14.       $6 =
  15.       $7 =
  16.       $8 = #Gonn
  17.       $9 = Gonn
  18. */
  19. ?>
上面的正则表达式可以获取URL中的任何一部分:

  1. <?php
  2. // 从 URL 中取得主机名
  3. preg_match("/^(http:\/\/)?([^\/]+)/i", "http:///index.html", $matches);
  4. $host = $matches[2];
  5. // 从主机名中取得后面两段
  6. preg_match("/[^\.\/]+\.[^\.\/]+$/", $host, $matches);
  7. echo "domain name is: {$matches[0]}\n";
  8. ?>
阅读(673) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~