preg_replace()支持数组替换
$p =array('/[0-3]/','/[4-6]/','/[7-9]/');
$replace=array('你','好','啊');
$sub="0scsd4jff8jndjd";
$str1=preg_replace($p,$replace,$sub);
show($str1);
如果目标字符串是数组,则preg_replace会输出所有的元素,而preg_filter()只保留替换后的元素
$p =array('/[0-3]/','/[4-6]/','/[7-9]/');
$replace=array('你','好','啊');
$sub=array('jhdh3','jhb','dhcd7','s34','ooi');
$str1=preg_replace($p,$replace,$sub);
show($str1);
preg_grep()是阉割版的preg_filter,输出符合模式的原字符串而不进行匹配
preg_split($pattert,$subject);explode(); 根据pattern把字符串分割为数组
preg_quote($str)正则运算符转移
界定符 表示一个正则表达式的开始和结束 常用/……/ 或 #……#
正则表达式工具 regexpal
原子
可见原子
不可见原子:换行符 回车 制表符 空格直接在模式中键入空格就可以匹配到了
建议:匹配中文的时候最好把要匹配的中文转换成unicode编码,再写进模式,以防止编码问题出现的匹配错误。工具:unicode编码转换工具
原子的集合
. 匹配除换行符之外的任意字符
d 匹配任意一个十进制数字,即[0-9]
s 匹配一个不可见原子,即[f v]
w 匹配任意一个数字,字母,下划线,即[a-zA-Z0-9_]
量词
{n} n次
{n,} 至少n次
{n.m} n到m次
* 零到多次
+ 1到多次
? 零到1次
边界控制
^ 匹配字符串开始的位置
$ 匹配字符串结束的位置
模式单元
()匹配其中的整体为一个原子
贪婪匹配(默认):结果存在歧义时取其长
懒惰匹配(在结束界定符后加大写的U):结果存在歧义时取其短
比如:$pattern='/imooc.+123/'
$subject="I love imooc__123456789";
默认的贪婪模式匹配输出为:imooc__123456789
把模式改为:$pattern='/imooc.+123/U';
即懒惰匹配,输出为:imooc__123
常见修正模式
U 懒惰匹配
i 忽略大小写
x 忽略正则表达式中的空白
s 让元字符 ' . ' 匹配包括换行符在内的所有字符
常见正则表达式
非空 .+
保留两位小数的浮点数 d+.d{2}$ 应用:货币……
中国大陆手机号:共11位,第一位是1,第二位是3|4|5|7|8 1(3|4|5|7|8)d{9}
email ,没有权威模式 ^w+(.w+)*@w+.(w+)+$
url http://www.baidu.com 协议:://域名.顶级域名(协议可有可无常见的有http和HTTPS,顶级域名一定为字母)
^(https?://)?(w+.)+[a-zA-Z)+$ 第一个?表示http后面的s可有可无,第二个问号表示整个协议可有可无