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
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.
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.