正则表达式的作用:分割、查找、匹配、替换字符串
分隔符:正斜线(/)、hash符号(#)以及取反符号(~)
通用原子:\d、\D、\w、\W、\s、\S
元字符:. * ? ^ $ + {n} {n,} {n,m} [] () [^] | [-]
模式修正符:i m e s U x A D u
1.后向引用
$str = '<b>abc</b>';//字符串
$pattern = '/<b>.*</b>/';//正则表达式
$pattern = '/<b>(.*)</b>/';
preg_replace($apttern,'\\1',$str);//找b标签中的str,去掉b标签=>正则表达式加括号
// \1代表第一个括号匹配的内容,\\转义
2.贪婪模式
$str = <b>abc</b> <b>bcd</b>;
$pattern = '/<b>.* <\b>/';
preg_replace_all($pattern,'\\1',$str);//贪婪模式,匹配整个strabc</b> <b>bcd
$pattern = '/<b>.*?<\b>/';//取消贪婪模式,匹配每个b标签内
$pattern = '/<b>.*<\b>/U';//取消贪婪模式
3.正则表达式PCRE函数
preg_match()
preg_match_all()
preg_repalce()
preg_split()
4.中文匹配
UTF-8汉字编码范围是0x4e00-0x9fa5,
在ANSI(gb2312)环境下,0xb0-0xf7,0xa1-0xfe
UTF-8要使用u模式修正符使模式字符串被当成UTF-8,在ANSI(gb2312)环境下,
要使用chr将Ascii码转换为字符
$str='中文';
$pattern = '/[\x{}-\x{}]+/u';
$pattern = '/[\x{0x4e00}-\x{0x9fa5}]+/u';
//$pattern = '/['.chr(0xb0).'-'.chr(0xf7).']['.chr(0xa1).'-',chr(0xfe).']/';
preg_match($pattern,$str,$match);
var_dump($match);//中文
ex.
匹配所有img标签中的src的值
$str = '<img alt="高清无码" id="av" src="av.jpg" />';
$pattern = '/<img .*?src="(.*?)".*?\/>/i';
网友评论