• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Dateilisten: Angezeigten Dateinamen zusammenschneiden

BMicraft

Neues Mitglied
Ich hätte mal ne Frage, denn ich hab dazu eigentlich nichts gefunden (, weil ich wahrscheinlich falsch suche):
Gibt es eine Möglichkeit in PHP eine Dateiliste zu erstellen, die von jeder Datei, die eine Klammer im Namen hat, nur den Klammerinhalt anzeigt, und alle anderen Datein ausblendet?
Wäre wirklich nett von euch wenn ihr mir da helfen könntet :)
Schon mal DANKE im Voraus!
 
Hallo,

du könntest ganz normal ein ordner auslesen, da gibts 100te fertige sachen.

Wenn das hast brachst nur die ausgabe zu filtern nach Dateityp und dann mit regex das mit den klammern.
aber zuerst mach die normal ausgabe.

Cheffchen
 
Habe das jetzt so probiert:

<?PHP $dir01 = "dir";
$files = scandir($dir01);
foreach ($files("*(*)*.*") as $file) {
$file = str_replace("blablabla(", '', $temp01);
$temp01 = str_replace(")", '', $filedesc);
};
?>
<li>
<a href="download/<?php echo $file; ?>">
<?php echo $desc; ?>
</a>
</li>
<br>

Doch ich bekomme immer diese Fehlermeldung:

Fatal error: Function name must be a string in C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\---filestorage---\sandbox\inc.php on line

Wisst ihr, warum $file kein String ist, bzw könnt den Code optimieren?
PS: Wie erstellt man ein Code eigentlich richtig (als code)
 
Oh, mein Fehler ...
Aber kann man da auch bestimmen was im Dateiname sein muss, damit das File angezeigt wird, oder geht dass nicht?
habe: $files("*(*)*.*") mit glob("*(*)*.*" verwechselt, will aber auch nicht glob verwenden
 
weil man da, soweit ich weiß, das Verzeichnis nicht auswählen kann, ansonsten würde ich es eh gerne verwenden :D
 
Hallo,

und wieso möchtets nicht die funktion nutzen die extra von PHP dafür bereit gestellt wird?

sonst lese halt allen ein und filtere die ausgabe mit pregmatch.

Cheffchen
 
Man kann auch einfach mal in der Doku unter PHP: glob - Manual nachsehen und dann die User Contributed Notes beachten, da stehen in der Regel massenhaft Beispiele!
 
Funktioniert doch, zumindest solle es so funktioneren:

PHP:
<?PHP    
    $directory = "dir";
    foreach (glob("/" . $directory . "/*(*)*.*") as $file) {
        $file = str_replace("minecraft_pe(v", '', $temp01);
        $temp01 = str_replace(")", '', $filedesc);    };
?>
<li>
    <a href="download/<?php echo $file; ?>">
        <?php echo $filedesc; ?>
    </a>
</li>
<br>

Doch aus irgendwie bekomme ich eine Fehlermeldung:
Code:
Notice: Undefined variable: filedesc in C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\---filestorage---\sandbox\inc.php on line 11
 
Zuletzt bearbeitet:
ja aber ich verstehe nicht wieso $filedesc
Code:
$temp01 = str_replace(")", '', $filedesc);
nicht definiert sein soll ... hier mit habe ich es doch definiert, oder habe ich da etwas falsch verstanden?
 
Zuletzt bearbeitet:
Ich dachte, ich weiß wo der Fehler war, habe es anders gemacht, und bekomme nun wieder hierfür:
PHP:
<?PHP
    $directory = "dir";
    $bbracket = "minecraft_pe";
    $abracket = "";


    foreach (glob("/" . $directory . "/" . $bbracket . "*(*)" . $abracket . ".*") as $file) {
        $temp01 = str_replace($bbracket . "(", '', $file);
        $filedesc = str_replace(")" . $abracket, '', $temp01);
    };
?>


<li>
    <a href="download/<?php echo $file; ?>">
        <?php echo $filedesc; ?>
    </a>
</li>
<br>
diese Fehlermeldung:
Code:
Notice: Undefined variable: filedesc in C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\---filestorage---\sandbox\inc.php on line 14
 
Tja, dann wird glob wohl keine Dateinamen ermitteln können. Aber das wüsstest du, wenn du auf diese verschachtelte Programmierung verzichten würdest und dir erst das Array holst und prüfst, ob da überhaupt was gefunden wurde und erst dann durch die Schleife rennst.
 
Hier, ich will mal nicht so sein.
Hiermit kannst du dir den Ordner ausgeben lassen

PHP:
$directory = "dir";
$bbracket = "minecraft_pe";
$abracket = "";
$ausgabe =  glob("./".$directory."/".$bbracket."*.*");

echo "<pre>";
print_r($ausgabe);
echo "</pre>";

Damit müsstest du aber glaub ich weiter kommen. Du siehst dann ja den einzelnen String und dann machst du es halt mit str_replace oder halt mit regex. Aber das solltest du denn hinbekommen.
 
Zurück
Oben