PHP学习笔记--正则表达式及PCRE兼容正则表达式函数
正则表达式手册。点击查看
正则表达式在线测试工具:http://tool.oschina.net/regex/
1、^ :表示行的开始。
2、$ :表示行的结尾。
3、\b :匹配单词的边界。
4、\B :匹配非单词的边界。
5、[ ] :不区分大小写。(正则表达式是区分大小写的)
6、| :或。
7、- :连字符,表示字符串的范围。
8、[^] :排除字符.
9、? :匹配前面的字符一次或0此。
10、+ :匹配前面的字符一次或多次。
11、* : 匹配前面的字符0次或多次。
12、{n} : 匹配前面的字符n次。
13、{n,} : 匹配前面的字符至少n次。
14、{n,m} : 匹配前面的字符至少n次,最多m次。
15、. : 匹配换行符以外的任意一个字符。
16、\ : 转义字符。
PCRE兼容正则表达式函数
1、preg_grep()
<?php
$preg = "/\d{3,4}-?\d{7,8}/"; //国内电话格式的表达式
$arr = array('0530-7854685','15550172338','4317622','010-4317622');
$preg_arr = preg_grep($preg, $arr); //查找数组中匹配的元素
var_dump($preg_arr);
?>
结果显示:
2、preg_match() 和 preg_match_all()
<?php
$str = 'This is an example!';
$preg = '/\b\w{2}\b/'; //有两个字符组成的子串
$num1 = preg_match($preg,$str,$str1); //只匹配1次,并返回匹配的次数,存储到$str1数组中,$str1为可选参数
echo $num1.'<br/>';
var_dump($str1);
$num2 = preg_match_all($preg,$str,$str2);//只匹配所有的次数,并返回匹配的次数,存储到$str2数组中,$str2为可选参数
echo $num2.'<br/>';
var_dump($str2);
?>
结果返回:
3、preg_quote()
<?php
$str = '!,@,#,$,%,^,<,>,&';
$math = preg_quote($str); //将所有特殊字符进行转义
echo $math;
?>
结果显示:
4、preg_replace()
<?php
$str = '[b]粗体字[/b]';
$rst = preg_replace('/\[b\](.*)\[\/b\]/i', '<b>$1</b>', $str);
echo $rst;
?>
结果显示:
5、preg_replace_callback()
6、preg_split()