array nach einem wert durchsuchen

jackobo

Grünschnabel
Abend,
Mit welcher Funktion ist es möglich ein Array nach einer bestimmten Zeichenkette zu durchsuchen und die gefundenen Werte danach auszugeben?

z.B. Ich erstelle ein Array anhand der ausglesenen Dateien eines Ortners.

das Arry enthält nun die Werte: bild1-klein.jpg, bild1.jpg, bild2-klein.jpg, bild2.jpg.....

nun möchte ich alle Werte die "-klein" enthalten heraus suchen und augeben.

gruess jackobo
 
hmm......klappt nicht soganz :confused:

PHP:
$ordner = "../../images/albums/2005/";

//Wenn der Ordner existiert...
if(is_dir($ordner))
{
    //Hier beginnen wir die Bilder in dem Verzeichnis auszulesen
    $dir = opendir($ordner);
    //Hier beginnt die schleife, zum Auslesen der Dateien
    while(false != ($file = readdir($dir)))
    {
        //Wenn die Datei kein Verzeichniss ist...
        if ($file != "." && $file != ".." && !is_dir($file))
        {
			$treffer = preg_grep('/-klein/', $file);
			print $treffer;
        	
		} 
    }
//Nach dem Auslesen der Bilder wird die "Verbindung" mit dem Verzeichnis geschlossen
closedir($dir);
}

wenn ich $file mit print ausgebe, so bekomme ich die Werte: 001-klein.jpg, 001-klein.jpg....

wenn ich wie oben $treffer ausgebe, so erhalte ich die meldung: Warning: Second argument to preg_grep() should be an array in ....
 
ouw....

hier fehlte noch was, habe ich vollkommen übersehen ;)

PHP:
if ($file != "." && $file != ".." && !is_dir($file))
        {
			$array = array($file);
			$treffer = preg_grep('/-klein/', $array);
			foreach( $treffer as $name )
			{
			print "$name<br>";
			}
        	
		}

klappt nun.

gruss jackobo
 
Ich erstelle ein Array […] das Arry enthält nun die Werte: bild1-klein.jpg, bild1.jpg, bild2-klein.jpg, bild2.jpg..... […] nun möchte ich alle Werte die "-klein" enthalten heraus suchen und augeben.
Lies dir deinen Beitrag noch einmal durch und vergleiche dessen Aussage mit meinem Funktionsvorschlag und dessen Beschreibung.

Falls du jedoch obigen Algorithmus beibehalten möchtest, wird die strpos()-Funktion ausreichen.
 
jackobo hat gesagt.:
ouw....

hier fehlte noch was, habe ich vollkommen übersehen ;)

PHP:
if ($file != "." && $file != ".." && !is_dir($file))
        {
			$array = array($file);
			$treffer = preg_grep('/-klein/', $array);
			foreach( $treffer as $name )
			{
			print "$name<br>";
			}
        	
		}

klappt nun.

gruss jackobo

Warum erstmal alles in ein Array packen wenn man doch gleich die Ausgabe durchforsten kann ob es einen gewissen String enthält und danach packt man es in dann in ein Array ;)

Wie Gumbo sagte strpos() nehmen

oder hier noch weitere funktionen um Strings zu testen:

http://www.selfphp.de/funktionsreferenz/string_funktionen/strpos.php
 
Die array_search()-Funktion ist in diesem Fall nicht geeignet, da das Suchobjekt mit dem gesamten Wert eines Arrayelements übereinstimmen muss.
 
nero_85 hat gesagt.:

Ich denke mal es ist unangebracht da du mehere Elemente in diesem Array hast , also bild1-klein, bild2- klein etc etc.Da würde man nun entweder nach bild$i-klein suchen müssen oder alles was die endung -klein am ende hat.

So könnte man das gleich in einen Zug erledigen beim Auslesen des Ordners ohne noch grosse Umwege zu machen.
 
Zurück