file_exists mit nur einen Teil des Dateinamens

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • file_exists mit nur einen Teil des Dateinamens

    Hallo,
    wie kann ich mit file_exists eine Datei feststellen wenn ich nur einen Teil des Suchstrings (wie folgend die Artikelnummer) habe:

    Die Datei liegt so auf den Server: 952129_Artikelnummer_sbdb.jpg

    ..und weiter: wie bekomme ich den Dateinamen dann zurück um das Bild anzuzeigen.

    ..geht das überhaupt?
    ..habt Ihr einen Tipp (Link, Suchtext)?

    Danke und Gruß
    Michael Tyssen

  • #2
    Eine Datenbank verwenden wär wohl das beste und einfachste. Ansonsten halt mit glob() arbeiten.

    Kommentar


    • #3
      Zitat von Tyssen Beitrag anzeigen
      Hallo,
      wie kann ich mit file_exists eine Datei feststellen wenn ich nur einen Teil des Suchstrings (wie folgend die Artikelnummer) habe:

      Die Datei liegt so auf den Server: 952129_Artikelnummer_sbdb.jpg
      Glaub ich nicht. Eher liegt sie wohl hier ...
      PHP-Code:
      $_SERVER['DOCUMENT_ROOT'] . '/952129_Artikelnummer_sbdb.jpg'
      ... oder auch da ...
      PHP-Code:
      getcwd() . '/952129_Artikelnummer_sbdb.jpg'
      ... oder doch woanders.

      ..und weiter: wie bekomme ich den Dateinamen dann zurück um das Bild anzuzeigen.
      Indem du die fehlenden Pfadbestandteile ergänzt, sprich: vorne den Pfad zum Verzeichnis und hinten den Rest des Dateinamens anklebst. PHP hat dafür den String-Concatenation-Operator ".":

      PHP-Code:
      $artikelnummer '952129';

      // überprüfung der Artikelnummer, falls diese aus Benutzereingaben
      // stammt
      if (preg_match('/\A[0-9]+\z/'$artikelnummer)) {
        die(
      'ungültige Artikelnummer');
      }

      $restlicher_dateiname '_Artikelnummer_sbdb.jpg';

      // sollte immer mit einem Verzeichnistrenner enden
      $pfad_zur_datei '/'// laut deinen Angaben

      file_exists($pfad_zur_datei $artikelnummer $restlicher_dateiname); 
      Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

      Kommentar


      • #4
        Ich denke eher Tyssen kennt den kompletten Dateinamen nicht, dann wird glob wohl am besten sein, wie h3ll schon sagte.

        Kommentar


        • #5
          <Glaub ich nicht. Eher liegt sie wohl hier ...
          (Danke!!, verstehe ich zwar nicht, warum du darauf hinweist. Kann man sich doch denken und ist auch nicht so wichtig.)

          Die Frage hast du aber nicht verstanden. Liegt vielleicht an mein Deutsch.
          Also nochmal:

          Der Dateiname besteht aus drei Zeichenketten/teilen:
          1111_2222_333.jpg

          Ich möchte also per file_exists wissen ob es eine Datei ???_2222_??? gibt.
          1111 und 3333 sind dabei nicht bekannt. Wenn es die Datei gibt muss ich dann aber den kompletten Namen haben um diese Datei aufzurufen.

          ich werde mich mal mit glob beschäftigen DANKE!!!


          Gruß
          Michael Tyssen

          Kommentar


          • #6
            Nur anhand der Artikelnummer wird das nix!

            Da musst du zumindest wissen in welchem Verzeichnis das Bild liegt. -> Dafür musste aber den Pfad kennen...
            Mit dem Pfad lässt du dir alle Dateien in eben diesem Verzeichnis listen und schauste nach welche Datei die Artikelnummer im Dateinamen hat. So kannste das dann machen!
            WHILE (!$asleep) { $sheep++; }

            Kommentar


            • #7
              So einfach gates:

              foreach (glob("xxxxxx/2826/*_{$bild_id}_*.jpg") as $filename) {

              #echo "$filename - Größe: " . filesize($filename) . "\n";

              $bilder_anz="< img src=$filename>";
              }

              Kommentar


              • #8
                Womit dann auch geklärt wäre, dass das hier eine "falsche" Frage war:
                wie kann ich mit file_exists eine Datei feststellen wenn ich nur einen Teil des Suchstrings (wie folgend die Artikelnummer) habe:
                Wir werden alle sterben

                Kommentar


                • #9
                  Zitat von Tyssen Beitrag anzeigen
                  foreach (glob("xxxxxx/2826/*_{$bild_id}_*.jpg") as $filename) {

                  #echo "$filename - Größe: " . filesize($filename) . "\n";

                  $bilder_anz="< img src=$filename>";
                  }
                  Einfach?
                  Und was machst du, wenn es mehrere Dateien mit passendem Namen gibt?
                  In deinem Fall unterschlägt das Script dann alle bis auf die letzte, nach dem Motto: "Wird schon die richtige sein".
                  Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

                  Kommentar


                  • #10
                    Es ist ganz einfach: Deine Datenstruktur isch schlecht. Es kann nicht sein, dass du nach dem Artikelbild raten musst. Entweder du weisst wo es liegt und wie du darauf zugreifen kannst, oder du musst deine Datenhaltung überdenken.
                    Mein PHP Blog

                    Kommentar

                    Lädt...
                    X