元字符:
? 1个或0个前面的原子.
**
<?php
// 原子
$str="li.nuG..F.F___ 666y _ ";
$ptn='/.?/';
preg_match_all($ptn,$str,$arr);
echo '<pre>';
print_r($arr);
echo '</pre>';
?>
**
Array
(
[0] => Array
(
[0] => l
[1] => i
[2] => .
[3] => n
[4] => u
[5] => G
[6] => .
[7] => .
[8] => F
[9] => .
[10] => F
[11] => _
[12] => _
[13] => _
[14] =>
[15] => 6
[16] => 6
[17] => 6
[18] => y
[19] =>
[20] => _
[21] =>
[22] =>
)
)
* 任意多个字符(0、1或多个前面的原子).
星号匹配任意多个前面的原子
<?php
// 原子
$str="li.nuG..F.F___ 666y _ ";
$ptn='/.*/';
preg_match_all($ptn,$str,$arr);
echo '<pre>';
print_r($arr);
echo '</pre>';
?>
**
Array
(
[0] => Array
(
[0] => li.nuG..F.F___ 666y _
[1] =>
)
)
+ 1个或多个前面的原子.
加号匹配1个或多个前面的原子
<?php
// 原子
$str="li.nuG..F.F___ 666y _ ";
$ptn='/.+/';
preg_match_all($ptn,$str,$arr);
echo '<pre>';
print_r($arr);
echo '</pre>';
?>
**
Array
(
[0] => Array
(
[0] => li.nuG..F.F___ 666y _
)
)
*和+和?的区别
**
<?php
// 原子
$str="ab";
$ptn='/a+/';
preg_match_all($ptn,$str,$arr);
echo '<pre>';
print_r($arr);
echo '</pre>';
?>
**
Array
(
[0] => Array
(
[0] => a
)
)
**
<?php
// 原子
$str="ab";
$ptn='/a*/';
preg_match_all($ptn,$str,$arr);
echo '<pre>';
print_r($arr);
echo '</pre>';
?>
**
Array
(
[0] => Array
(
[0] => a
[1] =>
[2] =>
)
)
| 或者
**
<?php
// 原子
$str="linux and php is and linux very much";
$ptn='/linux|php|and/';
preg_match_all($ptn,$str,$arr);
echo '<pre>';
print_r($arr);
echo '</pre>';
?>
**
Array
(
[0] => Array
(
[0] => linux
[1] => and
[2] => php
[3] => and
[4] => linux
)
)
^ 以什么开头
**
<?php
// 原子
$str="linua and php is and linub very much linuc";
$ptn='/^linu./';
preg_match_all($ptn,$str,$arr);
echo '<pre>';
print_r($arr);
echo '</pre>';
?>
**
Array
(
[0] => Array
(
[0] => linua
)
)
$ 以什么结尾
**
<?php
// 原子
$str="linua and php is and linub very much linuc";
$ptn='/linu.$/';
preg_match_all($ptn,$str,$arr);
echo '<pre>';
print_r($arr);
echo '</pre>';
?>
**
Array
(
[0] => Array
(
[0] => linuc
)
)
\b 单词边界
**
<?php
// 原子
$str="linua and p2p isp3plinuc";
$ptn='/\ba.d\b/';
preg_match_all($ptn,$str,$arr);
echo '<pre>';
print_r($arr);
echo '</pre>';
?>
**
Array
(
[0] => Array
(
[0] => and
)
)
\B 非单词边界
**
<?php
// 原子
$str="linua and p2p isp3plinuc";
$ptn='/\Bp.p\B/';
preg_match_all($ptn,$str,$arr);
echo '<pre>';
print_r($arr);
echo '</pre>';
?>
**
Array
(
[0] => Array
(
[0] => p3p
)
)
[^] 取非
**
<?php
// 原子
$str="p2p isp3plinuc";
$ptn='/[^1-5]/';
preg_match_all($ptn,$str,$arr);
echo '<pre>';
print_r($arr);
echo '</pre>';
?>
**
Array
(
[0] => Array
(
[0] => p
[1] => p
[2] =>
[3] => i
[4] => s
[5] => p
[6] => p
[7] => l
[8] => i
[9] => n
[10] => u
[11] => c
)
)
{} 多少个前面的原子
**
<?php
// 原子
$str="13623614403";
$ptn='/^\d{11}$/';
preg_match_all($ptn,$str,$arr);
echo '<pre>';
print_r($arr);
echo '</pre>';
?>
**
Array
(
[0] => Array
(
[0] => 13623614403
)
)
() 单元匹配
preg_replace进行正则替换
<?php
// 原子
$str="2017-03-20";
$ptn='/\d+/';
$rep='linux';
$str2=preg_replace($ptn,$rep,$str);
echo $str2;
?>
**
linux-linux-linux
preg_replace单元匹配
<?php
// 原子
$str="2017-03-20";
$ptn='/^(\d+)-(\d+)-(\d+)$/';
$rep='$1/$2/$3';
echo preg_replace($ptn,$rep,$str);
?>
**
2017/03/20
两个反斜线相等于$
<?php
// 原子
$str="2017-03-20";
$ptn='/^(\d+)-(\d+)-(\d+)$/';
$rep='\\2=\\3=\\1';
echo preg_replace($ptn,$rep,$str);
?>
**
03=20=2017
**
**
**
**
**
**
**
**