正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
正则表达式的大致匹配过程
/[a-zA-z]+://[^\s]*/ //匹配URL /^((https|http|ftp)?://)[^\s]+/ //匹配URL和FTP /(\w+):\/\/([^\/:]+)(:\d*)?([^# ]*)/ //匹配URL协议、域、端口及相对路径 /\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/ //匹配邮箱地址
preg_match
执行匹配正则表达式参数 | 描述 |
---|---|
pattern | 必需。要搜索的模式,字符串类型。(正则表达式) |
subject | 必需。被查询的字符串。 |
matches | 可选。搜索结果。 |
示例:
$pattem = '/[0-9]/';
$subject = '11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk';
$a = preg_match($pattem,$subject,$matches);
var_dump($a); // 输出匹配次数
var_dump($matches); // 输出匹配结果
preg_match_all
执行一个全局正则表达式匹配参数 | 描述 |
---|---|
pattern | 必需。要搜索的模式,字符串类型。(正则表达式) |
subject | 必需。被查询的字符串。 |
matches | 可选。搜索结果。 |
示例:
$pattem = '/[0-9]/';
$subject = '11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk';
$a = preg_match_all($pattem,$subject,$matches);
var_dump($a); // 输出匹配次数
var_dump($matches); // 输出匹配结果
preg_replace
执行一个正则表达式的搜索和替换参数 | 描述 |
---|---|
pattern | 必需。要搜索的模式,可以使一个字符串或字符串数组。(正则表达式) |
replacement | 必需。用于替换的字符串或字符串数组。 |
subject | 必需。被查询的字符串或字符串数组。 |
limit | 可选。进行替换的最大次数。默认是 -1(无限)。 |
示例 1:
$pattem = '/ouyangke/';
$replacement = '欧阳克';
$subject = '11112222333344445555666677778888999900000
aaabbbcccdddeeefffggghhhiiijjjjkkkk
llllmmmmssssooopppqqqqrrrrssswwwvvvzzzxxxx ouyangke ouyangke ouyangke zhulaoshi zhulaoshi zhulaoshi ximen ximen ximen ';
$a = preg_replace($pattem, $replacement, $subject);
var_dump($a);
示例 2:
$pattem = array('/ouyangke/','/ximen/');
$replacement = array('欧阳克','西门大官人');
$subject = array(
'11112222333344445555666677778888999900000
aaabbbcccdddeeefffggghhhiiijjjjkkkk
llllmmmmssssooopppqqqqrrrrssswwwvvvzzzxxxx ouyangke ouyangke ouyangke ',
'ouyangke ouyangke ouyangke zhulaoshizhulaoshi ximen ximen ximen '
);
$a = preg_replace($pattem, $replacement, $subject);
var_dump($a);
preg_filter
执行一个正则表达式搜索和替换参数 | 描述 |
---|---|
pattern | 必需。要搜索的模式,可以使一个字符串或字符串数组。(正则表达式) |
replacement | 必需。用于替换的字符串或字符串数组。 |
subject | 必需。被查询的字符串或字符串数组。 |
limit | 可选。进行替换的最大次数。默认是 -1(无限)。 |
示例 1:
$pattem = '/ouyangke/';
$replacement = '欧阳克';
$subject = '11112222333344445555666677778888999900000
aaabbbcccdddeeefffggghhhiiijjjjkkkk
llllmmmmssssooopppqqqqrrrrssswwwvvvzzzxxxx ouyangke ouyangke ouyangke zhulaoshi zhulaoshi zhulaoshi ximen ximen ximen ';
$a = preg_filter($pattem, $replacement, $subject);
var_dump($a);
示例 2:
$pattem = array('/ouyangke/','/ximen/');
$replacement = array('欧阳克','西门大官人');
$subject = array(
'11112222333344445555666677778888999900000
aaabbbcccdddeeefffggghhhiiijjjjkkkk
llllmmmmssssooopppqqqqrrrrssswwwvvvzzzxxxx ouyangke ouyangke ouyangke ',
'ouyangke ouyangke ouyangke zhulaoshizhulaoshi zhulaoshi ximen ximen ximen '
);
$a = preg_filter($pattem, $replacement, $subject);
var_dump($a);
preg_quote
转义正则表达式字符参数 | 描述 |
---|---|
str | 必需。要转义的字符串。 |
示例:
$subject = '^ouyangke$zhulaoshi=miejue!\ximen&[] ';
$a = preg_quote($subject);
var_dump($a);
preg_grep
返回匹配模式的数组条目参数 | 描述 |
---|---|
pattern | 必需。要搜索的模式,可以使一个字符串。(正则表达式) |
input | 必需。输入数组 |
示例:
$pattem = '/^(\d+)?\.\d+$/';
$array = array(1, 2, 3.4, 53, 7.9);
$a = preg_grep($pattem,$array);
var_dump($a);
preg_split
通过一个正则表达式分隔字符串参数 | 描述 |
---|---|
pattern | 必需。要搜索的模式,可以使一个字符串。(正则表达式) |
subject | 必需。被查询的字符串 |
limit | 可选。分隔得到的子串最多只有 limit 个。默认是 -1(无限) |
示例:
$pattem = '/[\s,]+/';
$subject = 'ouyangke ouyangke zhulaoshi zhulaoshi ximen ximen';
$a = preg_split($pattem,$subject);
var_dump($a);