PHP正则表达式

来源:互联网 发布:域名池是什么意思 编辑:程序博客网 时间:2024/06/15 04:33

思维导图:


展开图地址:点击打开链接

下面用几个例子来简单了解一下正则表达式函数的作用:

1.preg_match()

<?php$subject='http://www.baidu.com/index.php';$pattern='/(\w+):\/\/(\w+)\.(\w+)\.(\w+)\/(\w+\.\w+)/';if(preg_match($pattern,$subject,$matches)){echo "URL:".$matches[0]."<br>";echo "协议:".$matches[1]."<br>";echo "主机:".$matches[2]."<br>";echo "域名:".$matches[3]."<br>";echo "顶域:".$matches[4]."<br>";echo "文件:".$matches[5]."<br>";}else{echo "NOT FOUND";}?>

输出结果:

URL:http://www.baidu.com/index.php
协议:http
主机:www
域名:baidu
顶域:com
文件:index.php

这个函数不仅能获取整个URL地址,还可以通过正则表达式的模式获取每个组成部分。

2.preg_match_all()

<?php$subject='百度地址http://www.baidu.com/index.php谷歌地址http://www.google.com/index.php搜狐地址http://www.sohou.com/index.php';$pattern='/(http?|ftps?):\/\/(www|bbs)\.(\w+)\.(com|net|org)(\/\w+\.\w+)?/i';$count=1;if(preg_match_all($pattern,$subject,$matches,PREG_SET_ORDER)){foreach($matches as $vals){echo "第".$count."个的URL:".$vals[0]."<br>";echo "第".$count."个的协议:".$vals[1]."<br>";echo "第".$count."个的主机:".$vals[2]."<br>";echo "第".$count."个的域名:".$vals[3]."<br>";echo "第".$count."个的顶域:".$vals[4]."<br>";echo "第".$count."个的文件:".$vals[5]."<br>";$count++;}}else{echo "NOT FOUND";}?>
输出结果:

第1个的URL:http://www.baidu.com/index.php
第1个的协议:http
第1个的主机:www
第1个的域名:baidu
第1个的顶域:com
第1个的文件:/index.php
第2个的URL:http://www.google.com/index.php
第2个的协议:http
第2个的主机:www
第2个的域名:google
第2个的顶域:com
第2个的文件:/index.php
第3个的URL:http://www.sohou.com/index.php
第3个的协议:http
第3个的主机:www
第3个的域名:sohou
第3个的顶域:com
第3个的文件:/index.php

这个函数与preg_match不同的一点就是它会一直匹配到字符串最后,获取所有的匹配结果。

3.preg_grep()

<?php$array=array("Linux RedHat9.0","Apache2.2.9","MySQL5.0.50","PHP5.3.1","LAMP","110");$version=preg_grep('/^[a-z]+\d+\.\d+\.\d+$/i',$array);echo "<pre>";print_r($version);echo "</pre>";?>

输出结果:

Array(    [1] => Apache2.2.9    [2] => MySQL5.0.50    [3] => PHP5.3.1)

这个函数将匹配到的内容以数组的形式返回。

4.preg_replace()

<?php$str="[b]aaaaaaa[/b][i]bbbbbb[/i][u]hehe[/u]";$pattern=array('/\[b\](.+)\[\/b\]/','/\[i\](.+)\[\/i\]/','/\[u\](.+)\[\/u\]/');$array=array('<b>$1</b>','<i>$1</i>','<u>$1</u>');$str2=preg_replace($pattern,$array,$str);echo "<pre>";print_r($str2);echo "</pre>";?>
输出结果:

aaaaaaabbbbbbhehe
这个函数在字符串替换上面有很好的作用。这个例子将UBB代码转为HTML代码,通常的留言板中需要到这个功能,防止被其他代码破坏界面布局。

5.preg_split()

这个函数就不举例子了,主要是用于按正则表达式对字符串进行分割。


2 0