您的位置:首页 > 编程语言 > PHP开发

PHP中Perl兼容类型的正则表达式相关函数总结

2010-09-28 11:16 609 查看
由于POSIX扩展类型的正则表达式函数自5.3版本时就被取消了,所以这里只总结Perl兼容类型的。

1、preg_grep(string 正则表达式,array 输入数组[,int 标识])

返回值类型:数组

返回值:返回输入数组中符合正则表达式的部分

补充说明:第三个参数如果被设置为PREG_GREP_INVERT, 将返回不匹配指定正则表达式的值

程序实例:

从指定数组中提取出网易公司的邮箱:

<?php
$input = array("abc@126.com","cde@yahoo.cn","fgh@163.com");
$output = preg_grep("/^[a-z]+@(126|163)/.com$/",$input);
print_r($output);
?>


 

2、preg_match(string 正则表达式, string 输入字符串[, array 输出数组的引用[,int 标识[, int 查询开始处]]] )

返回值类型:int

返回值:返回正则表达式被匹配的次数

补充说明:

    a、默认情况下,输出数组中的match[0]输出匹配的整个字符,match[1]匹配第一次匹配的子字符串,依此类推;

    b、参数标识如果设置为PREG_OFFSET_CAPTURE, 输出数组里的每个子数组里会添加一个子项,值为offset的值

程序举例:

<?php
$input = "http://writeblog.csdn.net/PostEdit.aspx";
$output = array();
$a = &$output;
if(preg_match("/[a-z]+/",$input,$a) == FALSE){
exit("ERROR OCCURS!");
}
print_r($output);
?>


3、preg_match_all(string 正则表达式, string 输入字符串, array 输出数组的引用[, int 标识[, int 查询开始出]])

返回值类型:int

返回值:返回正则表示被匹配的次数

补充说明:这个函数和preg_match除了下列的几项以外,是一样的:

    a、这个函数中 输出数组的引用 是必填参数

    b、最大的区别就是preg_match找到第一个匹配就停止了,而加上all以后,会找到所有匹配

    c、第三个区别就是参数 标识,在preg_match_all中这个参数的意义大不相同,作用主要是控制输出数组里数据存放的情况,需要多练习几次,呵呵

程序举例:

<?php
$input = "http://writeblog.csdn.net/PostEdit.aspx";
$output = array();
$a = &$output;
if(preg_match_all("/[a-z]+/",$input,$a) == FALSE){
exit("ERROR OCCURS!");
}
print_r($output);
?>


4、preg_replace(mixed 正则表达式, mixed 替代字符串 , mixed 输入[, int 匹配次数限制 [,int 匹配次数]])

返回值类型:mixed

返回值:如果输入数据是一个数组,将返回一个数组;如果输入数据是一个字符串,将返回一个字符串。如果发生了匹配,将返回新的数组或者字符串,如果没有发生匹配,将返回原数组或字符串,出错的话返回NULL

补充说明:这个功能很强大,PHP模板系统很多都是利用这个函数,因为第二个参数可以直接用到匹配的值!例如第二个参数里 //1 或者 $1代表每一个匹配中,匹配正则表达式里面相应的括号里面样式的值,//0 或者 $0代表整个被匹配的值。

程序举例:

<?php
$input = "<img src="{pic}" mce_src="{pic}">";
$output = preg_replace("/{[a-z]+}/","<?php=/$//1?>",$input);
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息