文章教程

15.5.4检查URL地址的正则表达式

9/17/2020 9:26:54 PM 人评论 次浏览

15.5.4 检查URL地址的正则表达式

本小节将讲述如何创建匹配URL地址的正则表达式。一般URL地址由以下几个部分构成。

❑协议名,通常是http

❑://

❑域名部分

❑路径文件部分,如/abc/123.html

在15.4.3小节已经使用过域名匹配的正则表达式,这小节只需完成其他部分的正则表达式即可。对于://在正则表达式中需要对字符/转义,即\/\/。另外对于整个http://部分,如果URL中不含这部分而URL的其他部分是正确的,那么这样格式的URL也应该算是合法的URL,即http://www.php.net和www.php.net都算是合法的URL。因此,该正则表达式的开头部分是:^(http:\/\/)?。

最后加上上小节对域名匹配的正则表达式,即完整的正则表达式是:/^((http:)\/\/)?[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)*.+$/。代码15-17是验证URL地址的一个完整PHP程序。

代码15-17 使用正则表达式验证URL地址的合法性15-17.php


01 <?php

02 $str_arr=array(

03 "http://www.myoosite.com",

04 "www.myoosite.com",

05 "http://www.myoosite.com/abc/123.html",

06 "//myoosite.com",

07 ":www.myoosite.com"

08 );//定义URL地址数组

09

10 $patt_url="/^(http:\/\/)?[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)*.+$/";//验证URL的正则表达式

11

12 foreach($str_arr as$str)//遍历数组

13 {

14 echo"字符串'$str':是";

15 if(preg_match($patt_url,$str))//匹配URL

16 {

17 echo"<b>合法的URL格式</b>";

18 echo"<br>";

19 echo"<br>";

20 }

21 else

22 {

23 echo"不合法的URL格式";

24 echo"<br>";

25 echo"<br>";

26 }

27 }

28 ?>


【代码解析】上述代码与代码15-16的结构完全一致,都是先建议一个字符串数组,然后创建好正则表达式,最后通过一个循环逐个检查URL地址的正确性。这段代码的执行结果如图15-19所示。

图 15-19 使用正则表达式验证URL地址的合法性

教程类别