Hallo Forum!
Am besten gebe ich euch zuerst den Code von meinen 2 Files:
links.php
exploding.php
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.
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(0, 1, 2, 2, 2, 3, 3, 3, 3);
$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($format, round($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
";
?>
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.
Kommentar