php 正则表达式的使用

要点: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、子网掩码及网关设置不正确";
  
  }

  

原文地址:https://www.cnblogs.com/hzijone/p/4692066.html