Antwort an „Felix Riesterer“ verfassen

Liebe(r) Killua,

weil es auch mit den echten Dateipfaden genau das Gleiche war.

du willst also lokal vorhandene Bilddateien verarbeiten? Dann ist eine URL mit HTTP-Protokoll keine gute Idee. Mit file_exists() bist Du da schon richtig.

Oder habe ich das was anderes versemmelt.

Das ist sehr wahrscheinlich.

Vllt. weil ich den Link zum Bild eigentlich mit pathinfo() hereinholte?

Mit anderen Worten, Du hast das mit pathinfo() einfach mal probiert, ohne genauer zu studieren, was diese Funktion eigentlich exakt tut. Naja, anscheinend fängt jeder irgendwann so an.

Bitte unterscheide zwischen dem Pfad eines HTTP-Requests und einem Pfad im Dateisystem! Das ist definitiv nicht das selbe!

Aber das brauche ich ja als src.

Da könntest Du Dich irren. Was verleitet Dich denn zu genau dieser Annahme?

Zuerst mit file_exists() das Vorhandensein der Datei(en) prüfen und dann den Link ausgeben?

Genau so. Der „Link“ soll wohl der Wert des src-Attributs sein? Oder was genau meinst Du jetzt mit „Link“?

Ich erfinde mal eben kurz ein Szenario, anhand dessen Du sehen kannst, wie das mit den Pfaden so zusammenhängt. Stellen wir uns vor, Deine Dateien liegen so auf Deinem Server:

+ http_root (oder /var/www/dein-user-name oder wie auch immer)
|
+--+ htdocs (das Stammverzeichnis Deiner Web-Dateien)
|  |
|  +-- mein-script.php
|  |
|  +--+ Bilder
|  |  |
|  |  +-- bild.jpg
|  |  |
|  |  +-- bild_T.jpg

Man kommt nun so an Deine Dateien:

  • http(s)://example.com/mein-script.php
  • http(s)://example.com/Bilder/bild.jpg
  • http(s)://example.com/Bilder/bild_T.jpg

Im vom PHP-Script ausgegebenen HTML-Dokument müsste ein Pfad so aussehen:

<img src="Bilder/bild_T.jpg" alt="Nasenspitze meiner süßen Katze">

Das Vorhandensein dieser Datei kann in mein-script.php so aussehen:

$bilder_dir = __DIR__.'/Bilder';
$alle_dateien = glob($bilder_dir.'/*');

foreach ($alle_dateien as $datei) {
  if (str_ends_with($datei, '.jpg')
    && !str_ends_with($datei, '_T.jpg')
  ) {
    // Vollbild erwischt!
    $thumbnail = str_replace('.jpg', '_T.jpg', $datei);
    if (file_exists($thumbnail)) {
      // Thumbnail gefunden!
    } else {
      // gibt kein passendes Thumbnail-Bild...
    }
  }
}

Den Code habe ich jetzt nicht getestet. Du schaust aber bitte sehr genau, wie ich die Pfadangaben durch die auto-magische Konstante __DIR__ erzeuge. In Deinem PHP-Script enthält diese Konstante nämlich den Pfad zum Verzeichnis, in dem Dein PHP-Script gespeichert ist. Und wenn Du weißt, wie es in seiner Umgebung aussieht, dann kannst Du entsprechend Unterverzeichnisse an diesen String anhängen (siehe $bilder_dir).

Liebe Grüße

Felix Riesterer

freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar

Ihre Identität in einem Cookie zu speichern erlaubt es Ihnen, Ihre Beiträge zu editieren. Außerdem müssen Sie dann bei neuen Beiträgen nicht mehr die Felder Name, E-Mail und Homepage ausfüllen.

abbrechen