php用正则表达式匹配URL的简单方法

2015-01-24信息快讯网

使用正则表达式匹配URL的简单方法,提供测试代码

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

^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
12            3  4        

测试代码如下:
<?php
$search = '~^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?~i';
$url = 'http://www.jb51.net/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", "http://www.jb51.net/index.html", $matches); 
$host = $matches[2]; 
// 从主机名中取得后面两段 
preg_match("/[^\.\/]+\.[^\.\/]+$/", $host, $matches); 
echo "domain name is: {$matches[0]}\n"; 
?>

ThinkPHP CURD方法之limit方法详解
ThinkPHP CURD方法之where方法详解
ThinkPHP Mobile使用方法简明教程
ThinkPHP的I方法使用详解
ThinkPHP的L方法使用简介
Codeigniter实现处理用户登录验证后的URL跳转
Codeigniter中禁止A Database Error Occurred错误提示的方法
教你如何在CI框架中使用 .htaccess 隐藏url中index.php
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
PHP解决URL中文GBK乱码问题的两种方法
PHP Curl出现403错误的解决办法
php使用正则过滤js脚本代码实例
PHP把空格、换行符、中文逗号等替换成英文逗号的正则表达式
PHP正则提取不包含指定网址的图片地址的例子
php使用curl和正则表达式抓取网页数据示例
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
CodeIgniter使用phpcms模板引擎
CodeIgniter基本配置详细介绍
PHP URL路由类实例
PHP set_error_handler()函数使用详解(示例)
php inc文件使用的风险和注意事项
php防止SQL注入详解及防范
php session劫持和防范的方法
php后门URL的防范
php用正则表达式匹配中文实例详解
PHP Curl多线程原理实例详解
php不用正则验证真假身份证
PHP CURL获取cookies模拟登录的方法
php使用curl模拟登录后采集页面的例子
PHP函数preg_match_all正则表达式的基本使用详细解析
php正则取img标记中任意属性(正则替换去掉或改变图片img标记中的任意属性)
解析PHP正则提取或替换img标记属性
©2014-2024 dbsqp.com