正则表达式

正则表达式的作用:分割、查找、匹配、替换字符串

\w 是数字字母下划线,并不是只包含字母

后向引用

<?php
$str = '<b>abc</b>';
$pattern = '/<b>(.*)<\/b>/';
$str = preg_replace($pattern, '\\1', $str);
var_dump($str);

贪婪模式

<?php
$str = '<b>abc</b><b>bcd</b>';
$pattern = '/<b>.*?<\/b>/';
//$pattern = '/<b>.*?<\/b>/U';
$strs = preg_match_all($pattern, $str, $match);
var_dump($match);

正则表达式PCRE函数:

  • preg_match

  • preg_match_all()、

  • preg_replace()

  • preg_split()

中文匹配

UTF-8汉字编码范围是0x4e00-0x9fa5,在ANSI(gb2312)环境,0xb0-0xf7,0xa1-0xfe

UTF-8要使用u模式修正符使模式字符串被当成UTF-8,在ANSI(gb2312)环境下,要使用chr将Ascii码转换为字符

<?php

$str = '中文';

$pattern = '/[\x{4e00}-\x{9fa5}]/u';

//$pattern = '/['.chr(0xb0).'-'.chr(0xf7).']['.chr(0xa1).'-'.chr(0xfe).']/';

preg_match($pattern, $str, $match);

var_dump($match);

示例:

<?php

// 请写出以139开头的11位手机号码的正则表达式

// 13988888888
//
$str = '13888888888';

$pattern = '/^139\d{8}$/';

preg_match($pattern, $str, $match);

var_dump($match);
<?php

// 请匹配所有img标签中的src的值

$str = '<img alt="高清无码" id="av" src="av.jpg" />';

$pattern = '/<img.*?src="(.*?)".*?\/?>/i';

preg_match($pattern, $str, $match);

var_dump($match);

Last updated