1. preg_match($pattern, $subject,[array& $match]) 用$pattern去匹配$subject 如果有一个匹配就返回并停止匹配,并将匹配到的值写入$match 中 并返回匹配到的个数
  2. preg_match_all($pattern, $subject, $matches) 用$pattern去匹配$subject 找到所有匹配,并将匹配到的值写入$matches 中 并返回匹配到的个数
$pattern = ‘/[0-9]/‘;
$subject = ‘helsda1324iuhihf13333’;
echo preg_match($pattern,$subject,$match).”\n”;
echo preg_match_all($pattern, $subject, $matches).”\n”;
var_dump($match);
var_dump($matches);
1
9
array(1) {
  [0]=>
  string(1) “1”
}
array(1) {
  [0]=>
  array(9) {
    [0]=>
    string(1) “1”
    [1]=>
    string(1) “3”
    [2]=>
    string(1) “2”
    [3]=>
    string(1) “4”
    [4]=>
    string(1) “1”
    [5]=>
    string(1) “3”
    [6]=>
    string(1) “3”
    [7]=>
    string(1) “3”
    [8]=>
    string(1) “3”
  }
}

正则替换函数

mixed preg_replace(mixed $pattern,mixed $replacement, mixed $subject) 和
mixed preg_filter(mixed $pattern,mixed $replacement,mixed $subject)
  1. $pattern 是字符串,$replacement必须是字符串
  2. $pattern 是数组, $replacement 可以是数组,也可以是字符串
    1. 数组:一一对应,如果不对应
      1. $pattern 数目大于 $replacement ,则对应的置换为空
      2. $pattern数目小于 $replacement ,则$replacement中多余的不会使用
    2. 字符串,每一个匹配到的都替换成字符串
  3. $subject 可以是数组,也可以是字符串
    1. 数组 对每一个数组数据进行匹配
    2. 字符串 对字符串进行匹配
preg_replace在返回匹配中会输出未发生匹配的字段 preg_filter 在返回匹配中不会输出未发生匹配的字段

preg_grep 函数

preg_grep($pattern, $subject);
preg_grep 只输出匹配的值,如果在数组中会保留索引
$pattern = ‘/[0-9]/‘;
$subject = array(‘hels’,‘da13’,‘24iuh’,‘ihf13333’);
var_dump(preg_grep($pattern, $subject));
array(3) {
  [1]=>
  string(4) “da13”
  [2]=>
  string(5) “24iuh”
  [3]=>
  string(8) “ihf13333”
}

preg_split函数

preg_split($pattern, $subject)以$pattern 作为分割模式,将$pattern进行分割 explode()函数是一个非正则表达式版本
$pattern = ‘/[0-9]/‘;
$subject = ‘helsda1324iuhihf13333’;
var_dump(preg_split($pattern, $subject)
array(10) {
  [0]=>
  string(6) “helsda”
  [1]=>
  string(0) “”
  [2]=>
  string(0) “”
  [3]=>
  string(0) “”
  [4]=>
  string(6) “iuhihf”
  [5]=>
  string(0) “”
  [6]=>
  string(0) “”
  [7]=>
  string(0) “”
  [8]=>
  string(0) “”
  [9]=>
  string(0) “”
}

preg_quote正则转义函数

preg_quote($str) 将字符串中的 正则符号进行转义

正则运算符

.+?0{}=!<>|:-$
$str= ‘~`!@#$%^&()_-+={}[]|:;”\‘/?.>,<’;
echo $str.”<br/>”;
$str = pregquote($str);
echo $str;
~!@#$%^&amp;*()_-+={}[]\|:;"'/?.&gt;,&lt;
~!@#\$%\^&*()-+\={}[]\|:;“‘/\?.&gt;,&lt;