PHP正则表达式学习笔记整理
趁今晚还有点勤快再整理一下,免得放假一激动啥事都抛脑后了。
百度文库的先来个:
php正则(一):
1.正则的介绍和作用;
描述复杂规则字符串的需要,主要作用:分割、匹配、查找、替换;
2.php中两个常用的正则函数;
正则函数:
preg_match:(mode、stringsubject、array matches);//perl语言为基础,应用较规范,执行较快;
参数说明:mode:正则模块;
stringsubject:正则内容;
matches:正则的结果;//会有重复的数据;
ereg:(mode、stringsubject、array regs);
参数说明:regs正则的结果;
上述两个正则都会返回boolen值;
3.正则表达式中包含的元素;
1)原子:最小的单位,正则,至少包含一个原子;
内容:普通字符、原子表、转义字符、a-zA-Z0-9;
2)元字符:(有特殊功能的字符,元素的匹配和筛选);
3)模式修饰符:(系统内置的特殊字符,扩展正则的原始功能);
4.正则表达式中的原子;
1)a-zA-Z_0-9 //常见字符;
2)(abc)(skd) //单元符合,括号内的元素会看做是一个内容;
3)[abcd][^abd] //原子表,^表示排除或者相反的内容;^:ctrl符;
4)转义字符:
\d: [0-9];
\D: [^0-9];
\w: [a-zA-Z_0-9];常见字符匹配;
\W: [^a-zA-Z_0-9];非常见字符;
\s: 空格、回车、制表符;
preg_match('#abc#','adjskjdacbabcasds',$arr);//要求有开始和结束符,两个相同的即可;
ereg('abc','adjskjdacbabcasds',$arr);//不需要开始和结束符;
实例:
if(preg_match('abc','adjskjdacbabcasdsabch',$arr)){
echo"匹配成功".$arr[0];
}else{
echo"匹配失败";
}
$mode='/ads/';//元字符的匹配;
$mode='/(99)/';//以99为单位的匹配;
$mode='/[98]/'匹配9和8有一个即可匹配成功;
$mode='/[^98]/'匹配除了9和8以外的所有内容;
$mode='/\d/' 匹配数字的原子表;
php正则(二):正则表达中的元字符;
可以理解为特殊符号或者运算符号;
* 匹配前一个内容0次,一次或者多次;
. 匹配内容的0次1次或多次,除了回车、换行以外的任意字符;(.*):任何字符;
+ 匹配前一个内容1次或者多次;
? 匹配前一个内容的0次或者1次;
| 选择匹配;(前面和后面内容当成整体操作)
^ 匹配字符串首部内容;
$ 匹配字符串尾部内容;
\b 匹配单词边界,边界可以是空格或者特殊符号;
\B 匹配除带单词边界以外的内容;
{m}匹配前面内容重复M次;
{m,}匹配前面内容重复次数大于m次;
{m,n}匹配前面内容重复次数在于m、n之间;
()合并整体匹配,放入内存,可使用\1\2依次获取;
$mode='/go*gle/';*前面的o是当做匹配的作用符处理的,而不作为数据的显示;
$mode='/\bis\b/';is前后都有分隔符;
$mode='/p{5,}/';匹配5次以上;
============================================================================================================================
遇到过的正则函数。
匹配form中的name并给它附上默认的value:
function getInput($post_form,&$rpost_data){ preg_match_all("/<input .*>/isU",$post_form,$inputarr); //print_r($inputarr);exit; foreach($inputarr[0] as $input_o){ preg_match('/ name=["\'](.*)["\'].* value=["\'](.*)["\'][^<]*>/isU',$input_o,$return); if(!empty($return[1])){ $param_name=$return[1]; $rpost_data[$param_name] = $return[2]; }else{ preg_match('/ value=["\'](.*)["\'].* name=["\'](.*)["\'][^<]*>/isU',$input_o,$return); if(!empty($return[2])){// halina 2011-9-30 $param_name=$return[2]; $rpost_data[$param_name] = $return[1]; }else{ preg_match('/ name=["\'](.*)["\'][^<]*>/isU',$input_o,$return); if(!empty($return[1])){// halina 2011-10-8 $param_name=$return[1]; $rpost_data[$param_name] =''; } } } if(strrpos($input_o,'checkbox')){ preg_match('/ name=["\'](.*)["\'][^<]*>/isU',$input_o,$return); if(!empty($return[1])){ $param_name=$return[1]; $rpost_data[$param_name] ='on'; } } } return $rpost_data; }
当然前提要自己匹配form。