要点:php正则表达式要用双引号,且要用“/ /”斜线做开始结束。

1、preg_match 、 preg_match_all

两者的区别:第一次匹配成功后就会停止匹配,如果要实现全部结果的匹配,即搜索到subject结尾处,则需使用 preg_match_all()

int preg_match(pattern, subject)

int preg_match_all(pattern, subject, matches)

两者函数都是 返回值是0或1。找不到返回0。

//遍历“/log”文件夹,匹配文件名储存到数组

  $logFileArr = scandir("/log");
$fileArr = "";
for($i=0; $i<count($logFileArr); $i++)
{
if(preg_match("/^JD_cloud.log[.]*[0-9]*$/",$logFileArr[$i],$m))
{
// print_r($m);
$fileArr[] = "/log/".$m[0];
}
}

NOTICE:

$str = "1,2,9";
if(preg_match("/^(([0-8]{1}),)*([0-8]{1})$/",$str,$matches))
{
print_r($matches);
echo "success";
}
else
{
echo "error";
}

如果正则表达式

/^(([0-8]{1}),)*([0-8]{1})$/

里没有加入^ $开关和结尾的正则符时,会出现匹配成功的情况。

  1. ^:表示匹配字符串的开始,也即该字符串是独立的开始而不是包含在某个字符串之内
  2. $:表示匹配字符串的结束,也即该字符串是独立的结束

2、根据正则表达式进行替换

mixed preg_replace(pattern, replacement, subject)

进行字符串或数组的正则表达式的替换。可替代preg_grep

<?
// 将“:”替换为“-”
$item = "F0:FF:20:DE:80"
$item = preg_replace("/:/","-",$item);
?>

3、在数组中查找符合的正则表达式的内容

array  preg_grep ( string $pattern , array $input [, int $flags = 0 ] )

4、 一些常用的正则表达式

匹配Ip,  子网掩码, 网关

  if(preg_match($preg_str, $ip)&& preg_match($preg_str,$gateway) && preg_match($preg_str,$submask) )  {

   if( (ip2long($ip) & ip2long($submask)) != (ip2long($gateway) & ip2long($submask)))
{
// $dataArr['NetmateGateway'] = $dataArr['NetmateIPAddr'];
$gateway = $ip;
} $cUsrConf->set_ini_file("network","ipaddr",$ip);
$cUsrConf->set_ini_file("network","gateway",$gateway);
$cUsrConf->set_ini_file("network","mask",$submask); }else{ $alertStr ="ip、子网掩码及网关设置不正确"; }
05-07 15:16
查看更多