// łączy pojedyncze, zagnieżdżone warunki koniunkcją private function mergeConjunctions($str){ if(($matchnum=preg_match_all('/Wifs*(/',$str,$matches,PREG_OFFSET_CAPTURE))>1){ $warunki=array(); $codes=array(); for($i=0; $i<$matchnum; ++$i){ $klamry=1; $code=substr($str,$matches[0][$i][1]); $code=preg_replace('/^[^(]*(/','',$code); $codelen=strlen($code); for($j=0;$j<$codelen;++$j){ if($code[$j]=="("){ ++$klamry; } if($code[$j]==")"){ --$klamry; if($klamry==0){ $warunki[]='('.substr($code,0,$j+1); $code=substr($code,$j+1); $j=$codelen; } } } if($j==$codelen && $klamry){ $str="// ".'ERR vipgen.opt.01 :: Zła liczba nawiasów ('.($klamry>0?'+':'-').$klamry.') dla if['.$i.']['.$matches[0][$i][1].']'."n".$str; } $codelen=strlen($code); for($j=0;$j<$codelen;++$j){ if($code[$j]==";"){ $code=substr($code,0,$j+1); $j=$codelen; } else if($code[$j]=="{"){ $klamry=1; for($k=$j+1;$k<$codelen;++$k){ if($code[$k]=="{"){ ++$klamry; } if($code[$k]=="}"){ --$klamry; if($klamry==0){ $code=substr($code,$j,$k-$j+1); $k=$j=$codelen; } } } if($k==$codelen && $klamry){ $str="// ".'ERR vipgen.opt.02 :: Zła liczba klamer ('.($klamry>0?'+':'-').$klamry.') dla if['.$i.']['.$matches[0][$i][1].']'."n".$str; $j=$codelen; } } } if($j==$codelen){ $str="// ".'ERR vipgen.opt.03 :: Błąd składni dla if['.$i.']['.$matches[0][$i][1].']'."n".$str; } $codes[]=$code; $str=substr($str,0,$matches[0][$i][1]).$code.substr($str,$matches[0][$i][1]+strlen($code)); } //var_dump($warunki); //var_dump($codes); } return $str; }