php: nur bilder aus scandir array raussortieren?
hab den folgenden code:
foreach ($results as $result) {
if ($result === '.' or $result === '..') continue;
if (is_dir($path . '' . $result)) {
echo "<option value='$result'>Ordner: $result</option>";
}
}
foreach ($results as $result) {
if ($result === '.' or $result === '..') continue;
$path_parts = pathinfo($result);
$pictureExtensions = array(".bmp", ".bpg", ".gif", ".ico", ".img", ".jpg", ".png", ".raw", ".xcf", ".svg", ".dvg");
if (is_file($path . "" . $result)) {
if (in_array($path_parts['extension'].$pictureExtensions)){
echo "<option value='result'>Bild: $result</options>";
}
else
{
echo "<option value='result'>Datei: $result</options>";
}
}
}
2 Antworten
Vom Beitragsersteller als hilfreich ausgezeichnet
![](https://images.gutefrage.net/media/user/Babelfish/1600521171320_nmmslarge__47_47_690_690_7a344d30a971c61ba08b6baba08a321b.png?v=1600521171000)
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
PHP
pathinfo liefert dir bei extension die Dateierweiterung ohne Punkt, also nur jpg statt .jpg – entsprechend müssen die Erweiterung in deinem Array auch ohne Punkt stehen.
Außerdem ist dein Aufruf von in_array falsch. Dort muss ein Komma statt des Punkts stehen.
Des weiteren sollte es wohl eher so heißen:
if (is_file($path . '/' . $result)) {
Woher ich das weiß:Berufserfahrung – Entwickle seit > 20 Jahren Anwendungen mit PHP.
![](https://images.gutefrage.net/media/user/regex9/1455660989427_nmmslarge__0_13_270_270_615d5a3bc6888f4c1486ce2b4d9d8f60.png?v=1455660989000)
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Webseite, programmieren, PHP
Hier fehlt der Heuhaufen (http://php.net/manual/de/function.in-array.php) bzw. du musst die Argumente mit einem Komma trennen. Aus
if (in_array($path_parts['extension'].$pictureExtensions)){
wird:
if (in_array($path_parts['extension'], $pictureExtensions)){
Passe dabei auf, dass der Wert des ersten Arguments auch jeweils mit einem Punkt beginnt oder entferne die Punkte aus den Einträgen deines Arrays.
Nein, in $path ist der Slash bereits enthalten. Konntest du aber nicht wissen, da dies nur in https://www.gutefrage.net/frage/html-option-value-variable-und-name-variable?foundIn=tag\_overview ersichtlich ist.