PHP入门读书笔记(十二):正则表达式函数

2022-10-11 21:15:25 126 0
魁首哥

php中有实现POSIX风格正则表达式函数,也有实现PCRE风格的正则表达式函数。PCRE函数要略优于POSIX函数。

POSIX和PCRE这些术语是什么可以另外寻找相关资料了解。

这些资料仅供参考

一、POSIX风格的正则表达式函数

POSIX风格这些函数已经在最新版PHP中已经移除了。

1、ereg()函数和eregi()函数

 函数格式:
bool ereg(string pattern,string string,[array regs]);
bool eregi(string pattern,string string,[array regs]);  

在字符串string 中匹配表达式pattern,如果匹配成功返回true,否则返回false。如果有第三个参数regs,则将成功匹配的字串按照子串(子表达式)划分,并存储到regs数组中。ereg区分大小写,而eregi不区分大小写。

 
运行结果:
array(1) { [0]=> string(6) "$_name" }  

2、ereg_replace()函数和eregi_replace()函数

 函数格式:
string ereg_replace(string pattern,string replacement,string string);
string eregi_replace(string pattern,string replacement,string string);  

在字符串string 中匹配表达式pattern,如果匹配成功,则使用replacement来替换匹配字串,并返回替换后的string。如果未在string中找到匹配项,则string 原样返回。eregi_replace()不区分大小写。

 
运行结果:
hello,TM.TM,TM  

3、split()函数和spliti()函数

 函数格式:
array split(string pattern,string string,[int limit]);
array spliti(string pattern,string string,[int limit]);  

使用表达式pattern来分割字符串string。如果有参数limit,那么数组最多有limit个元素,剩余部分都写到最后一个数组元素。如果函数错误,则返回false。Split()函数区分大小写,spliti()函数不区分大小写

 
运行结果:
array(4) { [0]=> string(2) "th" [1]=> string(1) " " [2]=> string(6) " a reg" [3]=> string(8) "ter book" }  

二、PCRE风格的正则表达式函数

4、preg_grep()函数

 函数格式:array preg_grep(string pattern,array input);  

使用数组input中的元素一一匹配表达式pattern,最后返回由所有相匹配的元素组成所组成的数组。

 
运行结果:
array(2){ [0]=>string(12)"0432112345678" [1]=> string(12) "0431-7654321" }  }  

5、preg_match()函数和preg_match_all()函数

 函数格式:
int preg_match(string pattern,string subject,[array matches]);
int preg_match_all(string pattern,string subject,[array matches]);  

在字符串subject中匹配表达式pattern。函数返回匹配的次数。如果有数组matches,那么每次匹配的结果都将被存储到数组matches中。

函数preg_match()的返回值是0或者1。因为该函数在匹配成功后就停止继续查找了,而preg_match_all()函数则会一直匹配到最后才会停止,所以参数array_matches对于preg_match_all()函数是必须有的,对preg_match()函数则可以省略。

 ';
   var_dump($str1);
   $num2 = preg_match_all($reg,$str,$str2);
   echo '

'.$num2.'
';    var_dump($str2); ?> 运行结果:   1 array(1) { [0]=> string(2) "is" } 2 array(1) { [0]=> array(2) { [0]=> string(2) "is" [1]=> string(2) "an" } }

6、preg_quote()函数

 函数格式:string preg_quote(string str,[string delimiter]);  

该函数将字符串str中所有特殊字符进行自动转义,如果有参数delimiter,那么该参数所包含的字串也将被转义。函数返回转义后的字串。

这里说的特殊字符是指正则表达式中具有一定意义的元字符。其他如:“@”,“#”等则不会被当做特殊字符处理。

 ';
   $str2 ='b';
   $match_str = preg_quote($str,$str2);
   echo $match_str;
?>
运行结果:
\!、\$、\^、\*、\+、\.、\[、\]、\\、/、\b、\<、\>  

7、preg_replace()函数

 函数格式:mixed preg_replace(mixed pattern,mixed replacement,mixed subject,[int limit]);  

该函数在字符串subject中匹配表达式pattern,并将匹配项替换成字串replacement。如果有参数limit,则替换limit次。

如果参数中调用的是数组,有可能在调用过程中并不是按照数组的key值进行替换,所以在调用之前需要使用ksoft()函数将数组重新排列。

 $1',$str);
echo $b_str;
?>
运行结果:
粗体字 //加粗的。  

这个例子的字串“$1”是在正则表达式外调用分组,按照$1,$2排列,依次表示从左到右的分组顺序,也就是括号顺序。$0表示的是整个正则表达式的匹配值。

8、preg_replace_callback()函数

 函数格式:
mixed preg_replace_callback(mixed pattern,callback callback,mixed subject,[int limit]);  

preg_replace_callback()函数和preg_replace()函数的功能相同,都是用于查找和替换字串。不同的是preg_replace_callback()函数使用一个回调函数来(callback)代替replacement参数。

注意:在preg_replace_callback回调函数中,字符串使用”,这样可以保证字符串中的特殊符号不被转义。

 $str[2]";
return $str;
}
$str = '[color=blue]字体颜色[/color]';
echo preg_replace_callback('/\[color=(.*)\](.*)\[\/color\]/U',"go_back",$str);
?>
运行结果:
字体颜色 //蓝色的  

9、preg_split()函数

 函数格式:array preg_split(string pattern,string subject,[int limit]);  

使用表达式pattern来分割字符串subject。如果有参数limit,那么数组最多有limit个元素。该函数与split()函数使用方法相同。

三、一星期小结

这一星期我们学习了条件控制语句,循环控制语句,字符串的介绍和操作函数,正则表达式语法规则和操作函数。学习一下子变得有点难起来了,需要我们去动手敲代码验证了。也只有这样才能巩固知识点。

收藏
分享
海报
0 条评论
126
上一篇:Swoole 4.5 对 Table 的优化,你知道吗? 下一篇:从0到300,Instagram创始人CTO分享工程团队成长的经验

本站已关闭游客评论,请登录或者注册后再评论吧~

忘记密码?

图形验证码