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。
posted @ 2012-01-18 00:00  林同学  阅读(499)  评论(1编辑  收藏  举报