php中常用的正则表达式函数

preg_match()

preg_match_all()

php100正则phpphp正则表达常用函数的总结代码示例 Webpack

preg_replace()

preg_filter()

preg_grep()

preg_split()

preg_quote()

接下来比拟讲解:

讲解中 $pattern 常日正则表达式 $subject 常日表示目标处理数据

定义一个方法 方便查看数据类型:

function show($val = null){

if(empty($val)){

//打印空

echo 'mull';

}elseif(is_array($val) || is_object($val)){

//打印数组或者工具

echo '<pre>';

print_r($val);

echo '</pre>';

}else{

//打印string int float

echo $val;

}

}

preg_match()与preg_match_all()

/方法大略解释/

preg_match($pattern,$subject,[array &$matches])

//匹配一次 第三个参数可选 匹配结果放置matches数组

preg_match_all($pattern,$subject,array &matches)

//匹配多次 三参必选 匹配结果放置matches数组

$pattern = '/[0-9]/';

$subject='b5fg4sgf3sd2f1g';

$m1 =preg_match($pattern,$subject,$arr1);

show($m1);

show($arr1);

/

1

Array

(

[0] => 5

)

/

$m2 =preg_match_all($pattern,$subject,$arr2);

show($m2);

show($arr2);

/

5

Array

(

[0] => Array

(

[0] => 5

[1] => 4

[2] => 3

[3] => 2

[4] => 1

)

)

/

2.preg_replace()与preg_filter()

/方法大略解释/

/

preg_replace与preg_filter

preg_replace($pattern,$replacement,$subject)

//正则更换函数被更换工具是数组 返回全部

//正则更换函数 被更换工具是数组 仅返回被更换元素

遐想:str_repalce()

echo str_replace(\公众world\"大众,\"大众Shanghai\"大众,\"大众Hello world!\"大众);

//得到Hello Shanghai!

//第一测 字符串中更换字符串 结论:此处preg_replace()与preg_filter()无差异

$pattern = '/[0-9]/';

$subject='b65fg4sgf3sd2f1g';

$replacement = '_';

$str1 = preg_replace($pattern,$replacement,$subject);

$str2 = preg_filter($pattern,$replacement,$subject);

echo '<hr>';

show($str1);

echo '<br>';

show($str2);

/

b__fg_sgf_sd_f_g

b__fg_sgf_sd_f_g

/

//第二测 字符串中根据数组正则 更换 结论:此处preg_replace()与preg_filter()无差异

$pattern = array('/[123]/','/[456]/','/[789]/');

$subject='b123fg3456sgf3789f1g';

$replacement = array('天','地','人');

$str3 = preg_replace($pattern,$replacement,$subject);

$str4 = preg_filter($pattern,$replacement,$subject);

echo '<hr>';

show($str3);

echo '<br>';

show($str4);

/

b每天天fg天地地地sgf天大家人f天g

b每天天fg天地地地sgf天大家人f天g

/

//第三测 数组中根据数组正则 更换 结论:此处展示preg_repalce()与preg_filter()差异

$pattern = array('/[123]/','/[456]/','/[789]/');

$subject=array('b','fg3','456','sgf','789','fg');

$replacement = array('天','地','人');

$str5 = preg_replace($pattern,$replacement,$subject);

$str6 = preg_filter($pattern,$replacement,$subject);

echo '<hr>';

show($str5);

echo '<br>';

show($str6);

/

Array

(

[0] => b

[1] => fg天

[2] => 地地地

[3] => sgf

[4] => 大家人

[5] => fg

)

Array

(

[1] => fg天

[2] => 地地地

[4] => 大家人

)

/

3 . preg_grep($pattern, array $subject) //此处$subject只可以为一维数组

/函数解释/

preg_grep($pattern,array $input)//只可以匹配一维数组 返回匹配成功的数组元素

可以理解preg_grep()为阉割版 preg_filter()

只做了匹配 不作更换

$pattern = '/[0-9]/';

$subject=array('b','fg3','456','sgf','789','fg');

$arr = preg_grep($pattern,$subject);

show($arr);

/

Array

(

[1] => fg3

[2] => 456

[4] => 789

)

/

4 . preg_split($pattern,$subject)//一匹配成功为切割点切割字符串成数组

可以理解preg_split()升级版的explode()

$pattern = '/[0-9]/';

$subject='bfg3456sgf789fg';

$arr = preg_split($pattern,$subject);

show($arr);

/

Array

(

[0] => bfg

[1] =>

[2] =>

[3] =>

[4] => sgf

[5] =>

[6] =>

[7] => fg

)

/

5 . preg_quote($str) 正则运算符转译

/

preg_quote($str) 正则运算符转译

. \ + ? [ ^ ] $ () {} = ! < > | : -

/

echo '<hr>';

$str = \公众qewr{asdf}[123]\公众;

$str =preg_quote($str);

print_r($str);

/

qewr\{asdf\}\[123\]

/

大略总结通性:

preg_ 开头

除preg_quote函数以外,第一个参数都是正则表达式

preg_match 表单验证等

preg_replace 造孽词语过滤等