PHP正则表达式
来源:互联网 发布:淘宝黑了 编辑:程序博客网 时间:2024/05/21 08:04
1.preg_match与preg_match_all
preg_match与preg_match_all这两个函数算是一组,这两个函数的不同点是preg_match只匹配第一次,而preg_match_all则匹配所有。
int preg_match_all ( string $pattern , string $subject [, array &$matches [, int $flags = PREG_PATTERN_ORDER [, int $offset = 0 ]]] )int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )
string $pattern:要搜索的样式;
string $subject:要搜索的目标;
array $matches:存放搜索结果;
int $offset:开始搜索的位置;
int $flags:标记值。
返回值:这两个函数的返回值都是匹配的次数,不同的是preg_match的返回值只为0或1,如果出现错误则都是返回false。
代码段1:<?php$pattern = '/[0-9]/';$pattern1 = '/[a-z]/';$subject = 'today20lk_$%9coo@bbs.qtw';$match = $match1 = array();$ret = preg_match($pattern,$subject,$match);echo "preg_match函数检索到的第1个数字";echo "<pre>";print_r($match);echo "</pre>";echo "<b>返回值=$ret</b>";echo "<br/>-----------------------------------<br/>";$ret1 = preg_match($pattern1, $subject,$match1);echo "preg_match函数检索到的第1个字母";echo "<pre>";print_r($match1);echo "</pre>";echo "<b>返回值=$ret1</b>";<pre name="code" class="html">代码段1输出:preg_match函数检索到的第1个数字Array( [0] => 2)返回值=1-----------------------------------preg_match函数检索到的第1个字母Array( [0] => t)返回值=1
如代码段1所示,preg_match函数在匹配到第1个匹配的字符后就停止运行,所以它的返回值只有0和1,0代表没有匹配,1代表匹配到了,错误则返回false。
preg_match_all函数会检索出subject中所有的匹配的值,它的返回值是匹配到的次数,错误则返回false。
代码段2:<?php$pattern = '/[0-9]{2}/';$pattern1 = '/[a-z]{3}/';$subject = 'today20lk_$%9coo@bbs.qtw';$match = $match1 = array();$ret = preg_match_all($pattern,$subject,$match);echo "preg_match_all函数匹配连续2个数字的结果";print_r($match);echo "返回值=$ret<br/>";$ret1 = preg_match_all($pattern1, $subject,$match1);echo "preg_match_all函数匹配连续3个字母的结果";print_r($match1);echo "返回值=$ret1";代码段2输出:<pre name="code" class="html">preg_match_all函数匹配连续2个数字的结果Array ( [0] => Array ( [0] => 20 ) ) 返回值=1preg_match_all函数匹配连续3个字母的结果Array ( [0] => Array ( [0] => tod [1] => coo [2] => bbs [3] => qtw ) ) 返回值=4
2.preg_replace与preg_filter
preg_replace与preg_filter函数的功能都是进行一个正则表达式的搜索和替换,不同点在于preg_replace返回所有值,而preg_filter只返回匹配的值。
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )mixed preg_filter ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
mixed $pattern:搜索的模式;
mixed $replacement:替换的信息;
mixed $subject:要搜索的字符串或数组;
int $limit:每个模式在subject上进行替换的最大次数。-1表示无限。
int $count:完整的替换次数。
返回值:如果subject是一个数组,则返回值为一个数组,其它情况返回值为字符串。发生错误则返回NULL。
代码段3:<?php/* * preg_replace与preg_filter */$subject = 'today20lk_$%9coo@bbs.qtw';$pattern = '/[a-z]{4}/';$replace = '小丸子';$ret1 = $ret2 = array();$ret = preg_replace($pattern,$replace,$subject);echo $ret;$ret = preg_filter($pattern,$replace,$subject);echo "<br/>$ret<br/>";$subject1 = array('apple','orange','02589','tomato','coffee');$pattern1 = '/(a|o)/';$replace1 = '啊';$ret1 = preg_filter($pattern1,$replace1,$subject1);echo 'preg_filter函数的返回输出<br/>';print_r($ret1);$ret2 = preg_replace($pattern1,$replace1,$subject1);echo '<br/>preg_replace函数的返回输出<br/>';print_r($ret2);代码段3输出: <pre name="code" class="html">小丸子y20lk_$%9coo@bbs.qtw小丸子y20lk_$%9coo@bbs.qtwpreg_filter函数的返回输出Array ( [0] => 啊pple [1] => 啊r啊nge [3] => t啊m啊t啊 [4] => c啊ffee ) preg_replace函数的返回输出Array ( [0] => 啊pple [1] => 啊r啊nge [2] => 02589 [3] => t啊m啊t啊 [4] => c啊ffee )在subject分别为字符串与数组的情况下,preg_filter与preg_replace的返回是有不同的。当subject为字符串的情况时,两个函数返回的都是替换之后的字符串;当subject是数组形式时,preg_replace返回所有替换和没替换的数组元素,而preg_filter只返回替换了的数组元素。
3、其它
array preg_grep ( string $pattern , array $input [, int $flags = 0 ] )array preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] )
string preg_quote ( string $str [, string $delimiter = NULL ] )
preg_split函数的功能是分割字符串,与explode功能类似;
preg_grep函数的功能是返回匹配模式的数组条目;
preg_quote函数的功能是转义正则表达式字符。
4、参考
( ):标记一个子表达式的开始和结束位置。子表达式可获取。
{n}:匹配确定的n次;
{n,}:至少匹配n次,n是一个非负整数;
{n,m}:至少匹配n次,至多匹配m次,n和m都是一个非负整数;
.:匹配除\n外的任何单个字符;
*:匹配前面的字符0次或多次,等价于{0,};
?:匹配前面的字符0次或1次,等价于{0,1};
+:匹配前面的字符1次或多次,等价于{1,};\b:匹配一个单调边界,如要匹配某个单词,可用\bword\b;
\B:匹配非单词边界;
\s:匹配任何空白字符,包括空格、制表符等,等价于[\f\n\r\t\v];
\S:匹配任何非空白字符,等价于[^\f\n\r\t\v];
\d:匹配一个数字,等价于[0-9];
\D:匹配一个非数字,等价于[^0-9];
\w:匹配包括下划线的任何单词字符,等价于[A-Za-z0-9_];
\W:匹配任何非单词字符,等价于[^A-Za-z0-9_];
[abc]:a,b 或 c;[^abc]:除了a,b和c之外的其它;
[a-zA-z0-9]:小写字母,大写字母,数字0-9;
^:起始位;
$:结束位;
x|y:匹配x或y;
5、修正符
i:忽略字母大小写;
s:使用s修正符后,“.”匹配所有字符,也包括换行符;
A:强制从字符串的开头开始进行匹配;(似乎没什么用处)
x:忽略正则表达式中的空白;
U:不重复匹配;
m:多行匹配;(似乎没什么用处)
- php的正则表达式
- PHP 正则表达式资料
- PHP 正则表达式
- php正则表达式介绍
- PHP 正则表达式资料
- php之正则表达式
- PHP和正则表达式
- PHP常用正则表达式
- php正则表达式实例
- PHP正则表达式收集
- PHP正则表达式收集
- PHP正则表达式
- PHP中的正则表达式
- PHP中的正则表达式
- PHP和正则表达式
- PHP常用正则表达式
- php正则表达式详解
- PHP正则表达式
- Android ui utils-简单实用的Android界面工具
- 小白和坑爹的ATI显卡
- C语言标识符的3大属性
- HDOJ 2473 Junk-Mail Filter(并查集集合删点+虚拟父节点)
- 分布式应用的各基本领域及开发技术概要
- PHP正则表达式
- Android 学习之路
- Java中Split函数的用法技巧
- 无法实现接口成员,因为它不是公共的——interface
- _splitpath和_mekepath的用法
- SDWebImage的使用
- git 配置用户
- python 时间处理
- 15 个常用的 SQL Server 高级语法