//Функция удаляет пустые строки в начале и конце кода
function trim_code($code)
{  
  $code = explode("\n", $code);
  $code_count = count($code);
  if($code_count > 0)
  {
    //Удаляем пробелы и пустые строки в начале кода  
    $i = 0;
    while(isset($code[$i]) AND trim($code[$i])=='')
    {
      unset($code[$i]);
      $i++;  
    }
    //Теперь удаляем в конце =)
    $i = 0;
    while(isset($code[$code_count-1-$i]) AND trim($code[$code_count-1-$i])=='')
    {
      unset($code[$code_count-1-$i]);
      $i++;  
    }
  }
  return implode("\n", $code); 
}
 
// Функция удаляет лишние пробелы перед строками не нарушая форматирование
function check_space($code)
{
   $code = explode("\n", $code);
   $spaces = array();
   $code_count = count($code);
   if($code_count > 0)
   {
     foreach($code AS $key=>$value)
     {
       if(trim($value) != '')
       {  
         $letters = str_split($value);
         $count = count($letters);
         $i = 0;
         while($letters[$i] == ' ')
         {
           $i++;    
         }
         $spaces[] = $i;
       }
       else
        $code[$key] = trim($value);  
     }
     if(count($spaces)>0)
     {
       $min_sp = min($spaces);
       if($min_sp > 0)
       {
         $new_code = array();  
         foreach($code AS $value)
         {
           if($value)
             $new_code[] = mb_substr($value, $min_sp);
           else
             $new_code[] = $value;
         }
         $code = $new_code;    
       }
     }
   }
   return implode("\n", $code);
}
 
function check_code()
{
    $code = str_replace("\r\n", "\n", $code);
    $code = trim_code($code);
    $code = check_space($code);
    return $code;
}