Mr. Pretty: 50 Zeilen zum Sauberen Code!

Hallo,

ich hab hier ein script für euch:
Dieses Script säubert scripte:

beispiel

<?php
if($test == '')
{
if ($test == '')
{
print "hallo";
}
print "hallo";
}
?>

hat natürlich keinen sinn. nun gibt man im folgenden script einfach an wie die datei heisst und erhält als ausgabe sauberen code.

###############################################

<?php

Settings

$tfile = "chk.php"; // file der zu checkenden datei  #
$sfile = "prettynow.txt"; // file der fertigen datei #
######################################################

$file = file($tfile);
$tc = '0';

for ($f=0; $f <= count($file)-1; $f++)
{
 $line = $file[$f];
 $line = ltrim($line);
 if ($line == '') continue;
 if (eregi("{", $line))
 {
  $tc++;
  for ($i=0; $i <= $tc-2; $i++)
  {
   $lines[] = "\t";
  }
  $lines[] = $line;
 }
 elseif (eregi("}", $line))
 {
  $tc--;
  for ($i=0; $i <= $tc-1; $i++)
  {
   $lines[] = "\t";
  }
  $lines[] = $line;
 }
 else
 {
  for ($i=0; $i <= $tc-1; $i++)
  {
   $lines[] = "\t";
  }
  $lines[] = $line;
 }
}

$result = join("", $lines);
$data = fopen($sfile, "w+");
fwrite($data, $result);
fclose($data);
if ($tc != '0') print "Parse Error!";
?>
<iframe src="prettynow.txt" width="100%" height="100%"></iframe>

##########################################

es guckt lediglich nach { und } mehr nicht ;-)
und zeigt an wenn die klammer struktur nicht auf geht, also wenn ein "klammer zu" fehlt oder zuviel ist...

aber auchtung ist nur für code in dem selben schreib stil gedacht wie man ihn im script selber sieht.

also

function bla ()
{
  print "hallo";
}

nicht

function bla (){
  print "hallo";
}

oder sonst was.

MfG
Mr. Pretty

  1. Servus,

    ich hab hier ein script für euch:
    Dieses Script säubert scripte:

    beispiel

    <?php
    if($test == '')
    {
    if ($test == '')
    {
    print "hallo";
    }
    print "hallo";
    }
    ?>

    hat natürlich keinen sinn. nun gibt man im folgenden script einfach an wie die datei heisst und erhält als ausgabe sauberen code.

    es guckt lediglich nach { und } mehr nicht ;-)
    und zeigt an wenn die klammer struktur nicht auf geht, also wenn ein "klammer zu" fehlt oder zuviel ist...

    aber auchtung ist nur für code in dem selben schreib stil gedacht wie man ihn im script selber sieht.

    Setze den Coe mal so um, dass er nicht nur Deinen Schreibstiel erkennt. Ich gebe zu habe den Code nicht kompßlett durchgelesen und verstanden. PHP ist nunmal nicht meine Welt.

    Aber was püassiert mit folgernden Eintrag??

    $test="{{eine Klammer für irgendwas welche niemals mehr hier geschlossen wird";

    Blickt Dein code dies?
    Gruss Matze

    1. Aber was püassiert mit folgernden Eintrag??

      $test="{{eine Klammer für irgendwas welche niemals mehr hier geschlossen wird";

      Blickt Dein code dies?

      Nein. hm aber ich könnte ja prüfen, ob { oder } innerhalb eines " und " steht, aber es sollte ja auch nur ein ansatz sein... evtl, wenn ich das so benötige bringe ich noch eine v1.2 raus ;-)

      Mr. Pretty

      1. Servus,

        Sei mir nicht böse, aber zu einer Code Validierung gehört deutlich mehr als nur 50 Zeilen.
        Das was Du machst ist eigentlich ganz nett so0 als kleiner wie lerne ich PHP Code aber wirklich nicht gebrauchbar.
        Der ansatz, zu prüfen, ob eine { innerhalb "" liegt hilft auch nicht sehr weit.

        Du musst Dir verschiedene Listen erzeugen, und den jeweiligen inhalt prüfen sowie eine Baum Struktur erstellen und je nach gegebenheit prüfen.

        Das ganze thema ist recht komplex und viele Eidtor Hersteller wagen sich nicht daran.

        Davon abgesehen, kann ein guter texteditor soetwas schon graphisch anzeigen und Du kannst ohne mühe im code prüfen ob eine Klammer an der richtigen stelle wieder geschlossen wird.

        Gruss Matze

  2. Hi!

    Also erstmal: netter ansatz.

    Aber: Matze hat vollkommen recht: Das ist zu individuell! Es gibt tausend verschiedene Schreibweisen, und warscheinlich hat jeder Programmierer so ein bisschen seinen eigenen Stil. Deswegen sollte man das dringend noch verallgemeinern ;-).

    Außerdem ist ein script, dass nur die { und } überprüft, irgendwie zu simpel. Es gibt nunmal tausende Fehlerquellen in php...

    aber sicherlich ein guter Anfang. So ein Onlinedebugger wär sicher manchmal schon praktisch ;-)...