file_exists...

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

  • file_exists...

    Hallo!

    Mit
    Code:
    if(file_exists($Dateiname))
    frag ich ja ab, ob eine Datei am Server vorhanden ist.
    Dazu muss aber der gesamte Dateiname am Server vorhanden sein.
    Ich bräuchte jetzt für eine Suche nur einen Teil des Dateinamens....

    Wenn ich zb. in das Suchfeld "Hi" eingebe, dann sollten alle Dateien die "Hi" im Dateinamen enthalten ausgegeben werden (egal ob groß oder kleingeschrieben), also zb. "Zhi99.jpg"...

    Kann ich da irgendwas mit Platzhalter machen wie dem * oder so?
    Dass ich das irgendwie hier (if(file_exists($Dateiname))) integriere, dass vorne noch was stehen kann oder auch hinten im Dateinamen...?

    Bitte um Hilfe!

    Vielen Dank!

  • #2
    nö, opendir verwenden und das Verzeichnis untersuchen

    Kommentar


    • #3
      Bzw. glob(), was gleich Suchmuster als Parameter entgegennehmen kann.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        fast-lösung...

        Danke erstmal!
        Ich hab jetzt (eh bei euch) was gefunden bzw. habs schon etwas editiert:

        Code:
        <?php
        $suchbegriff = $_POST['suchbegriff'];
        
        function echodir($path = "bilder/"){
        	$suche = "^$suchbegriff.*.*$";
        	$dir = dir($path);
        	while(false !== ($file = $dir->read()))  {
        		if(("."  == $file) OR (".." == $file)) continue;
        		if(is_dir($path."/".$file)) { 
        			echodir($path."/".$file);
        		} else {
        			if(preg_match("/$suche/",$file)){
        				echo($file."<br >\n");
        			}
        		}
        	}
        	$dir->close();
        }
        
        echo("
        <table border=0 cellpadding=0 cellspacing=0>
        	<tr>
        		<td><b>Datei-Suche</b></td>
        	</tr>
        	<tr>
        		<td>Bitte geben Sie einen Suchbegriff ein:</td>
        	</tr>
        	<tr>
        		<td>
        			<form name=form_suche action=$PHP_SELF method=post>
        				<input name=suchbegriff type=text size=30>
        				<input type=submit value=Suchen>
        			</form>
        		</td>
        	</tr>
        </table>
        ");
        
        if($suchbegriff != '') {
        	echo "Folgende Dateien wurden gefunden: <br />\n";echodir("bilder/");
        }
        ?>
        Aber mit dieser Zeile hab ich Probleme:

        $suche = "^$suchbegriff.*.*$";

        Und zwar, weils mir den Suchbegriff hier nicht übernimmt bzw. weiß ich nicht recht, wie ich die Variable hier einbauen soll....?
        Jetzt werden immer alle Dateien ausgegeben...

        Und meine 2. Frage: wenn keine Datei gefunden wurde, wie kann ich das noch abfragen, dass dann eben steht "Es wurde keine Datei gefunden!"?

        Vielen Dank im Voraus!

        Kommentar


        • #5
          benutz mal [php]-tags dann wirds bunt.

          lies mal im manual das thema zu funktionen durch. da steht auch, dass $suchbegriff innerhalb der funktion nicht definiert ist.

          das hättest du übrigens auch erfahren, wenn du unsere regeln bezüglich error_reporting() befolgt hättest.

          Ich bitte dies nachzuholen.

          Und meine 2. Frage: wenn keine Datei gefunden wurde, wie kann ich das noch abfragen, dass dann eben steht "Es wurde keine Datei gefunden!"?
          setz ein flag: $found = true; und wenns nicht gesetzt ist, kannst du entsprechend vorgehen.

          Kommentar


          • #6
            Danke, hab ich jetzt geändert und die Suchbegriffübergabe funktioniert jetzt.

            Nur möcht ich auch solche Dateien ausgeben, deren Suchbegriff INNERHALB des Dateinamens steht.
            Wenn ich zb. nach "hi" suche, dann sollten auch Dateinamen ausgegeben werden wie zb.: "aaahi 19"
            Wie muss das dann genau definiert sein:
            $suche = "^$suchbegriff.*.*$";
            Hab schon etwas rumprobiert, aber leider kein Ergebnis erzielt

            Und ein Problem hab ich noch mit dem $found: wo muss ich das definieren?
            Bin da mit meinen Versuchen nicht wirklich auf einen grünen Zweig gekommen....

            Danke!

            Kommentar


            • #7
              1) Regex Lernen. (Haben nen schönes Tutorial auf unserer Seite)

              2) $found setzt du einfach auf true, wenn du etwas gefunden hast.
              Dann bei der ausgabe (oder nach der auflistung) prüfst du
              if(!isset($found))
              // nichts gefunden.

              Kommentar


              • #8
                Ahh, ich habs

                Reguläre Ausdruck muss so aussehen: $suche = ".*$suchbegriff.*";

                Das mit dem $found hab ich auch hinbekommen!

                Also, vielen Dank nochmal!
                Liebe Grüße,
                Karin!

                Kommentar

                Lädt...
                X