手机版

php正则表达式学习笔记

时间:2021-09-22 来源:互联网 编辑:宝哥软件园 浏览:

Php正则表达式学习笔记分享:

1.创建正则表达式。

$ regex='/\ d/I ';这有点像JavaScript中的第一种方式,只是这里的单词是字符串。

2.正则表达式中的特殊字符。

特殊字符有:\ *?[ ^ ] $ () { }=!| : -

3.正则表达式中的函数。

有八种方法,preg_match和preg_match_all,preg_replace和preg_replace_callback,preg_grep,preg_split,preg_last_error和preg_quote。

preg_match:

执行正则表达式匹配。

返回模式的匹配数。它的值将是0次(不匹配)或1次,因为preg_match()将在第一次匹配后停止搜索。

$ subject=' dd133aa2$ pattern='/\ d/';preg_match($pattern,$subject,$matches,PREG _ OFFSET _ CAPTURE);print _ r($ matches);上面的示例代码添加了参数“PREG_OFFSET_CAPTURE”,这样在$matches中将多一个OFFSET数。例如下面的“2”。

preg_match_all:

执行“全局”正则表达式匹配。

返回完全匹配的数量(可能为0),如果出现错误,则返回FALSE。

在下面的代码中,$subject和$pattern与上面的相同,只是preg_match被preg_match_all替换了。

preg_match_all($pattern,$subject,$matches,PREG _ OFFSET _ CAPTURE);print _ r($ matches);返回的次数是2,匹配两次。看看数组$matches中的输入,有两个。还有一个比上面那个多。

preg_replace:

执行正则表达式搜索和替换。

如果主题是数组,preg_replace()返回一个数组,否则返回一个字符串。

如果找到匹配,则返回替换的主题,否则返回未更改的主题。如果发生错误,将返回空值。

在代码中,$subject是一个包含两组字符串的数组。接下来,用大写的“z”替换多个数字。

$subject=array('dd133aa2 ',' kk1 ff 3 ');$ pattern='/\ d/';$result=preg_replace($pattern,' Z ',$ subject);print _ r($ result);

preg _ replace _回调:

执行正则表达式搜索并用“回调”替换它。

此函数的行为相当于preg_replace(),包括返回的结果,只是它可以指定回调而不是替换来计算替换字符串。

下面的代码也被替换为大写的“z”。每次在回调函数中,$matches中的内容都是代码的注释部分,第一次是133,第二次是2。

$ subject=' dd133aa2$ pattern='/\ d/';$ result=preg _ replace _ callback($ pattern,function($ matches){//$ matches[0]=133/$ matches[0]=2返回' Z ';},$ subject);print _ r($ result);preg_grep:

返回与模式匹配的数组条目。

返回按输入中的键索引的数组。

在下面的示例代码中,我在$subject数组中添加了一个“ddsdfd”,它不包含数字。匹配的时候,我过滤掉了没有数字的。

但是,$result2打印出来的结果正好相反,即打印出过滤后的结果,但关键字仍然是2,而不是0。

$subject=array('dd133aa2 ',' kk1ff3 ',' ddsdfd ');$ pattern='/\ d/';$result=preg_grep($pattern,$ subject);$result2=preg_grep($pattern,$subject,PREG _ GREP _ invent);print _ r($ result);print _ r($ result 2);

preg_split:

用正则表达式分隔字符串。

返回通过用模式边界分隔主题获得的子字符串数组。

在下面的代码中,我用$pattern括起了表达式,以便在$result2中捕获它。

$ subject=' dd133aa2cc$ pattern='/(\ d)/';$result=preg_split($pattern,$ subject);$result2=preg_split($pattern,$subject,null,PREG _ SPLIT _ DELIM _ CAPTURE);print _ r($ result);print _ r($ result 2);

preg _ last _错误:

返回上次PCRE常规执行生成的错误代码。

preg_match('/(?\D |\d )*[!]/',' foobar foobar foobar ');$ result=preg _ last _ error();//PREG_BACKTRACK_LIMIT_ERROR调用backtrack limit超过print _ r($ result);preg_quote:

转义正则表达式字符。

返回转义字符串。

在下面的代码中,$subject有两个需要转义的字符,“”和“?”。

打印$result后,它是“dd”。a\?A2cc”,但是在$result2中,添加了一个额外的参数“a”,因此“a”也将被转义为“dd”。\a\?\a2cc "

$subject='dd.a?a2cc ';$ result=preg _ quote($ subject);$result2=preg_quote($subject,' a ');print _ r($ result);print _ r($ result 2);4.图案修改器。

以上是对php正则表达式所有内容的介绍,希望对大家的学习有所帮助。

版权声明:php正则表达式学习笔记是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。