Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] file_exists() und groß und kleinschreibung

Einklappen

Neue Werbung 2019

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

  • [Erledigt] file_exists() und groß und kleinschreibung

    Hey, ich weiß, ich hab gerade noch ne Anfrage laufen, allerdings jetzt noch mit nem ganz anderen Script noch ein anderes Problem. Ich hoffe man hängt mich nun nicht an den Forenpranger *schauder*

    Im Prinzip suche ich nur ne Funktion. Ich hab vor Ewigkeiten mal ein Script geschrieben, mit dem man Berichte schreiben kann und dass dazu Ordner in einem Dateisystem erstellt, in das später Bilder hineingeladen werden können. Natürlich soll dabei jeder Ordner nur genau einmal erstellt werden können, dem Bericht entsprechend. Leider hab ich damals jegliche eingaben zugelassen, sodass es mir jetzt schwer fällt zu überprüfen, ob der Ordner bereits existiert.

    D.h., der ORdner heißt meinetwegen FaschFei (FaschingFeier), ich möchte das nun überprüfen mittels file_exists('faschfei'), so wird mir php ein false geben, weil die groß und kleinschreibung nciht übereinstimmt. Im Endeffekt, bekomme ich so aber auf nem windowsserver ernsthafte probleme mit redundanzen. Hat da wer ne idee wie ich akzeptable ergebnisse bekomme?

    danke!
    netti


  • #2
    Geht es dabei um eine allgemeingültige Lösung oder willst Du eine bestimmte Installation des Skript testen/ändern?

    Kommentar


    • #3
      Ich versteh deine Frage nciht so richtig, aber ich versuchs mal zu erklären.
      Also, generell suche ich eine allgemeingültige Lösung, sodass bei der Überprüfung der Datei nciht auf Groß und kleinschreibung geachtet wird, sondern generell alle ordner mit dem string beachtet werden und auf file_exists() anschlagen.

      Sollte es tatsächlich keine Möglichkeit geben, muss ich mir wohl ein script schreiben, dass alle ordner und ordnerverweise in der datenbank in kleinschreibung umwandelt =/

      Kommentar


      • #4
        Du könntest alternativ zuerst den Ordnerinhalt in ein Array lesen und die einzelnen Array-Indizes case-insensitive mit der Vorlage vergleichen.
        Refining Linux: “Performing Push Backups – Part 1: rdiff-backup

        Kommentar


        • #5
          Zitat von Manko10 Beitrag anzeigen
          Du könntest alternativ zuerst den Ordnerinhalt in ein Array lesen und die einzelnen Array-Indizes case-insensitive mit der Vorlage vergleichen.
          Du meinst ich vergleiche am Besten den vom Nutzer eingegebenen Ordnernamen namen mit einem array in das ich vorher den existierenden Ordnernamen eingelesen habe?

          Wenn ja hab ich aber das Problem, dass ich gar nciht weiß, ob so ein Ordner existiert. Das Problem ist ja, dass ich nur die Ordnereingaben vom Benutzer habe, aber nciht weiß, wie der möglicherweise existierende Ordner im Dateisystem geschrieben ist.

          Kommentar


          • #6
            Du kannst doch sowohl die Benutzereingabe als auch die ausgelesenen Verzeichnisnamen in Kleinbuchstaben umwandeln und dann vergleichen.

            Kommentar


            • #7
              Zitat von David Beitrag anzeigen
              Du kannst doch sowohl die Benutzereingabe als auch die ausgelesenen Verzeichnisnamen in Kleinbuchstaben umwandeln und dann vergleichen.
              beste idee hätte ich genauso gemacht. und im neuen hätte ich nur 0-9,a-b,- als zeichen erlaubt... dann gibts die probs net
              Under Construktion

              Kommentar


              • #8
                ja, schon. das problem ist doch bloß, dass ich nicht weiß wie der ordner heißt... Also der nutzer geibt nen ordnername an und der wird von dem formular viel file_exists($ordner) getestet. Davon weiß ich aber doch noch nciht, ob da nicht vielleicht ein Ordner ist mit anderen Formatierungen. Bitte erklärts mir nochmal.

                Alternative wäre, die EIngabe des nutzers mit allen Eingaben in der db zu vergleichen... aber das wäre ne menge rechenaufwand.

                Kommentar


                • #9
                  Wie wärs damit?

                  PHP-Code:
                  function file_exists_case($strUrl)
                  {
                      
                  $realPath str_replace('\\','/',realpath($strUrl));
                     
                      if(
                  file_exists($strUrl) && $realPath == $strUrl)
                      {
                          return 
                  1;    //File exists, with correct case
                      
                  }
                      elseif(
                  file_exists($realPath))
                      {
                          return 
                  2;    //File exists, but wrong case
                      
                  }
                      else
                      {
                          return 
                  0;    //File does not exist
                      
                  }

                  Kommentar


                  • #10
                    du ließt einfach erst einmal alle ordner aus deiner datenstruktur die ja schon vorhanden ist ein wie oben schon erwähnt in ein array oder dergleichen, dann kannste einfach auch wie schon obe erwähnt dein array durchlaufen und alle ordnernamen auf kleinschreibung umändern mit dieser funktion PHP: strtolower - Manual und dann durchläufst du nochmal das array und schaust eben ob der eingegebene ordner schon vorhanden ist falls ja muss er einen anderen namen auswählen falls nein erstellt er einen neuen

                    so hab ich das verstanden korrigiert mich wenn ich mich irre *G*

                    greetz

                    Kommentar


                    • #11
                      Zitat von reliC Beitrag anzeigen
                      ... dann durchläufst du nochmal das array und schaust eben ob der eingegebene ordner schon vorhanden ist ...
                      Dazu gibt es die Funktion in_array().
                      Gruss
                      L

                      Kommentar


                      • #12
                        Zitat von lazydog Beitrag anzeigen
                        Dazu gibt es die Funktion in_array().


                        ahhh schick das kannt ich noch nicht und wieder was gelernt so erleichtert man sich natürlich 1 kompletten durchlauf nochmal super

                        Kommentar


                        • #13
                          SUper, danke

                          EIne sache noch... kann es sein, dass php was dagegen hat Ordner umzubennen, wenn nur die groß und kleinschreibung anders ist?

                          Code:
                            DB-ID Nr 17 | Kategorie: Wettkaempfe: Daten abgerufen
                           # Pruefe Ordner 'training_wettkampf/wettkampf/Master06'... gefunden.
                           # Benenne 'Master06' um zu 'master06'... Fehlgeschlagen. Beendet.
                          bei

                          PHP-Code:
                            print " # Benenne '$zeile[2]' um zu '$ordner_neu'... ";
                            
                          rename('$zeile[1]/$zeile[2]''$zeile[1]/$ordner_neu') or die("Fehlgeschlagen. Beendet.");
                            print 
                          "erfolgreich.<br>\n"

                          Kommentar


                          • #14
                            Linux-Systeme unterscheiden zwischen Groß- und Kleinschreibung.
                            Außerdem werden Variablen innerhalb von '...' nicht erkannt. Variableninterpolation funktioniert nur innerhalb von "..."
                            Refining Linux: “Performing Push Backups – Part 1: rdiff-backup

                            Kommentar


                            • #15
                              Zitat von netti Beitrag anzeigen
                              SUper, danke

                              EIne sache noch... kann es sein, dass php was dagegen hat Ordner umzubennen, wenn nur die groß und kleinschreibung anders ist?

                              Code:
                                DB-ID Nr 17 | Kategorie: Wettkaempfe: Daten abgerufen
                               # Pruefe Ordner 'training_wettkampf/wettkampf/Master06'... gefunden.
                               # Benenne 'Master06' um zu 'master06'... Fehlgeschlagen. Beendet.
                              bei

                              PHP-Code:
                                print " # Benenne '$zeile[2]' um zu '$ordner_neu'... ";
                                
                              rename('$zeile[1]/$zeile[2]''$zeile[1]/$ordner_neu') or die("Fehlgeschlagen. Beendet.");
                                print 
                              "erfolgreich.<br>\n"
                              Variablen in einfachen Anführungszeichen werden nicht umgewandelt. du versuchst also $zeile[1]/$zeile[2] in $zeile[1]/$ordner_neu umzubenennen. ich glaube kaum das es einen Ordner mit dem Namen $zeile[1]/$zeile[2] bei dir gibt. Du musst " benutzen.

                              Kommentar

                              Lädt...
                              X