foreach() und eigene Funktion

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • foreach() und eigene Funktion

    Hallo Forum!

    Am besten gebe ich euch zuerst den Code von meinen 2 Files:

    links.php
    PHP Code:
    <?php

    echo"
    <form action=\"exploding.php\" method=\"post\">
    <textarea name=\"s\" rows=\"10\" size=\"400\"></textarea>
    <br>
    <input type=\"submit\" value=\"Test\">
    </form>
    "
    ;

    ?>


    exploding.php
    PHP Code:
    <?php

    $_POST
    ["s"] = $s;

    // Trennen der einzelnen -Links und erfassen der Gesamntzahl von Links
    $links explode("\n",$s);

    $all count($links);

    echo
    "<h1><font color=\"red\">Link-Parsing Engine</font></h1><hr>";

    // Parsen und Ausgeben aller Links
    foreach ($links as $links) {

    // Link parsen
    $teile explode("|"$links);

        
    $hm        $teile[0]; // hm://
        
    $file        $teile[1]; // file
        
    $name        $teile[2]; // filename
        
    $size        $teile[3]; // filesize
        
    $hash        $teile[4]; // hash

        
    $extension explode("."$name);  // extension
        
    $count=count($extension);
            
    $ext        $extension[$count-1]; // Dateiname
            
    // Create a human file size for the byte-number        
                
    function humanize_size ($size$rounder 0)
    {
        
    $sizes   = array('Bytes''Kb''Mb''Gb''Tb''Pb''Eb''Zb''Yb');
        
    $rounders = array(012223333);
        
    $ext $sizes[0];
        
    $rnd $rounders[0];

        if (
    $size 1024)
        {
          
    $rounder 0;
          
    $format =  '%.' $rounder 'f Bytes';
        }
        else
        {
          for (
    $i=1$cnt=count($sizes); ($i $cnt && $size >= 1024); $i++)
          {
             
    $size      $size 1024;
             
    $ext       $sizes[$i];
             
    $rnd       $rounders[$i];
             
    $format =  '%.' $rnd 'f ' $ext;
          }
        }

        if (!
    $rounder)
        {
          
    $rounder $rnd;
        }

        return 
    sprintf($formatround($size$rounder));
    }

    $finalsize humanize_size($size);
    // End of human-size creator 



    ######################################### END OF PARSiNG #########################################

    echo"
    <br><br>
    <b>Datei</b>: 
    $name<br>
    <b>Dateityp</b>: 
    $ext<br>
    <b>Dateigrösse:</b> 
    $finalsize<br><br>
    <b>Ganzer Link:</b><br> 
    $links

    <hr>
    "
    ;

    }


    echo
    "
    <br>
    <b>Anzahl Links:</b> 
    $all

    "
    ;

    ?>
    Mein Rpoblem liegt bei der Funktion "humanize_size". Und zwar wenn man mehr als einen Link im ersten File eingibt und sie dann absendet kommt im File "exploding.php" folgender Fehler:

    Fatal error: Cannot redeclare humanize_size() (previously declared in jaja:29) in jaja on line 29

    Das liegt ja daran, dass ich durch foreach() die Funktion mehrmals include und es somit zu einem Error kommt. Wie kann ich das jetzt lösen? Ich muss ja irgendwie ne variabel an dem Funktionsnamen anhängen, die immer um eins grösser wird. Aber wie kann ich das realisieren?

    Danke schon mal für eure Antworten.
    Last edited by pascal007; 28-04-2007, 17:11.

  • #2
    wie wär's, wenn du die funktion einfach außerhalb der schleife deklarierst, so wie es sich gehört?

    Comment


    • #3
      Uups... ja so geht's natürlich . Anfängerfehler... danke für die Hilfe .

      Comment

      Working...
      X