PHP Nur bestimmte Dateiformate auflisten (Fehler im Skript)

Jonas123

Ensign
Registriert
Mai 2008
Beiträge
209
Hi,
dieser "Codeschnipsel" soll nur bestimmte Dateiformate (Bilder, um genau zu sein) auflisten...
PHP:
	if (strpos($file, ".jpg") == false) OR (strpos($file, ".JPG") == false) OR (strpos($file, ".gif") OR (strpos($file, ".gif") == false) {
	continue;
	}
Jedoch wird folgender Error ausgegeben:
Code:
Parse error: syntax error, unexpected T_LOGICAL_OR in C:\xampp\htdocs\galerie\show_pic.php on line 37
Wo ist dr Fehler??
lg
Jonas
P.s. Welche gängigen Bildformate gibt es?
 
OR gibt es in PHP nicht
PHP:
if (strpos(strtolower($file), ".jpg") === false || strpos(strtolower($file), ".gif") === false) {
    continue;
    }
PNG und BMP sind noch verbreitete Bildformate.
Und achte auf deine Klammerung!
 
Zuletzt bearbeitet:
Das Or ist nicht das Problem.
Deine Bedingung in der If-Anweisung ist aber schon nach dem ersten "false" beendet.
Und dort wird eine Klammer erwartet und kein OR mit weiteren Bedingungen.

Grüße
 
Hi,
der code von pvc-junkie funktioniert leider auch nicht...
was wäre denn der richtige???
lg
 
PHP:
 if ((strpos(strtolower($file), ".jpg") == false) OR (strpos(strtolower($file), ".gif") == false)) {
    continue;
    }
Ungetestet. Sollte aber funktionieren.
 
Mach es so:
PHP:
$fileExploded= explode(".",$file);
$ending = strtolower($fileExploded[count($fileExploded)-1]);
if ($ending == 'jpg' || $ending == 'gif') { 
   continue;
}
Dein anderer Code hat nämlich das Problem, dass er auch "true" zurückgibt, wenn die Datei test.jpg.exe heißt.
 
super, danke, hat funktioniert!
lg
 
Wenn es keinen Syntaxfehler gibt, stimmt der Code. Nur die Logik war falsch, da ich ja nicht wußte wann nun "continue" gemacht werden soll und wann nicht.
PHP:
if (strpos(strtolower($file), ".jpg") !== false || strpos(strtolower($file), ".gif") !== false) {
    continue;
    }
Das continue wird dann ausgeführt, wenn die Position von '.jpg' oder '.gif' irgendetwas außer 'nicht gefunden' ist. Bei strpos muß der Identisch-Operator verwendet werden, da sonst die Position 0 nicht von "nicht gefunden" unterschieden werden kann.

Viele Wege führen nach Rom...
PHP:
if(in_array(strtolower(strrchr($file, '.')), array('.gif', '.jpg', '.bmp', '.png'))) {
  echo 'Es ist eine Bilddatei.';
}
 
Hi,
ja, das hatte ich schon ausgebessert, ein bisschen hab ich dann ja doch Ahnung von PHP ;)
Danke nochmal!
lg

EDIT: Gibt es eigentlich noch so einen Code, dass nur ordner aufgelistet werden???
lg
 
Hi,
leider funktioniert der code hier nicht:
PHP:
if(is_dir($file) ) { continue; }
hier wird alles aufgelistet, auf ordner!
lg
 
Also normal antworte ich auf solche Themen ja nicht, aber hier springt es mich gerade zu an. WAS funktioniert nicht? Das nur Ordner ausgegeben werden? Wenn das dein Problem ist, dann schlag mal in der Doku deiner wahl nach was continue eigentlich tut, damit sollten dann auch all deine Fragen beantwortet werden.

Edit:
continue ist natürlich KEIN Abbruch, dafür gibts break ;)
 
Zuletzt bearbeitet:
Eine sinnvolle neue Boardregel hier in diesem Forum wäre mal, dass jeder mit einem Problem auch ein GANZES LAUFFÄHIGES Script einstellt, woraus man das Problem nachstellen kann. Dieses kleine Schnipsel sagt jedenfalls 0 aus, denn darin wird überhaupt nichts aufgelistet weil auch gar nichts ausgegeben wird. Gemäß Doku gibt is_dir bei einem Verzeichnis true zurück (und false wenn an der Stelle gar nichts existiert ODER wenn dort eine Datei ist) und daher wird bei dir vermutlich der Fehler irgendwo anders liegen.
 
danke, habs alleine gelöst...
lg
 
und noch eine sinnvolle regel für ein Forum wäre, das leute, wenn sie eine lösung haben, sie auch hinschreiben und nicht nur "habs gelöst". Sowas regt mich nämlcih tierisch auf wenn ich am googlen bin und nach fehlern suche. Nix gegen dich pers. das is in jedemforum fast überall so.
 
Zurück
Oben