/*
* 讲讲元字符 . 的用法
. 任何字符的一次
.? 任何字符的一次或者0次
.+ 任何字符的一次或者以上 每次都可以是不同的值譬如 abc
.* 任何字符的0次或者以上 每次都可以是不同的值譬如 abc
*/
{i} 代表任何字符
$mode = '/a.b/'; $str = 'a{i}b';
$mode = '/a.?b/'; $str = 'a{i}b'; 或者 $str = 'ab';
$mode = '/a.+b/'; $str = 'a{i}。。。b';
$mode = '/a.*b/'; $str = 'a{i}。。。b'; 或者 $str = 'ab';
<pre class="php" name="code">/*
* 讲讲元字符 \b 的用法
* 匹配单词的边界 空格或者特殊字符(_不属于特殊字符)
*/
$mode = '/\bis\b/'; $str = 'where is'; ok
$mode = '/\bis\b/'; $str = 'where.is '; ok
$mode = '/\bis\b/'; $str = 'where_is '; error
$mode = '/\bis\b/'; $str = 'where.is '; ok
<pre class="php" name="code">/*
* 讲讲元字符 ( ) 的用法
* 合并整体匹配 放入内存,可使用\1 \2 类似 获取
*/
$mode = '/l(abc)l\\1/'; $str = 'labclabc';
if ( preg_match($mode, $str, $arr) ) {
echo '匹配成功';
print_r($arr);
}
结果:
匹配成功
Array
(
[0] => labclabc
[1] => abc
)
/*
* 讲讲元字符 ( ) 的用法
* 讲一个例子 譬如 年月 可以是 2014-12-12 或者 2014/12/12 或者 2014\12\12 或者 20141212
*/
$str = '2014-12-12';
$mode = '/2014(.*)12\\1(12)/s';
$str = '2014-12-12';
if ( preg_match($mode, $str, $arr) ) {
echo '匹配成功';
print_r($arr);
}
结果:
匹配成功
Array
(
[0] => 2014-12-12
[1] => -
[2] => 12
)
<pre class="php" name="code">$mode = '/\d{4}(.*)\d{1,2}\\1\d{1,2}/s';
$str = '2014-12-12';
if ( preg_match($mode, $str, $arr) ) {
echo '匹配成功';
print_r($arr);
}
结果:
匹配成功
Array
(
[0] => 2014-12-12
[1] => -1
)
$mode = '/{(.*)}/U';
$str = 'adk{who}oeo{is}rot{it}yor';
preg_match_all($mode,$str,$arr);
print_r($arr);
结果:
Array
(
[0] => Array
(
[0] => {who}
[1] => {is}
[2] => {it}
)
[1] => Array
(
[0] => who
[1] => is
[2] => it
)
)
$mode = '/{(.*)}/U';
$str = 'adk{who}oeo{is}rot{it}yor';
echo preg_replace($mode, '中文', $str);
结果: adk中文oeo中文rot中文yor
$mode = array('/{\w{3}}/', '/{\w{2}}/');
$mat = array('我是三个单词', '我是二个单词');
$str = 'adk{who}oeo{is}rot{it}yor';
echo preg_replace($mode, $mat, $str);
输出:
adk我是三个单词oeo我是二个单词rot我是二个单词yor
$mode ='/([a-z])/i';
$str = '111a1111A111111b11';
echo preg_replace($mode, "md5(<a target=_blank href="file://\\1">\\1</a>)", $str);
输出:
111md5(a)1111md5(A)111111md5(b)11
$mode ='/([a-z])/ie';
$str = '111a1111A111111b11';
echo preg_replace($mode, "md5(<a target=_blank href="file://\\1">\\1</a>)", $str);
输出:1110cc175b9c0f1b6a831c399e26977266111117fc56270e7a70fa81a5935b72eacbe2911111192eb5ffee6ae2fec3ad71c777531578f11
小结:
小结:1.替换正则表达式 。2.正则表达式数组。3.在执行过程中通过修正符 e,把替换的内容运算后在替换
备注:preg_replace 函数 还有第四个参数 limit,替换的次数 preg_replace($mode,$mat,$str,$limit),limit如果是 1 的话就是替换一次就会停止