Webstatt.org - Community seit 2006 - 2012 (2024?)

Problem mit glob()

Avatar user-162
11.06.2007 15:59

Ich probier hier schon ewigs rum aber irgendwie wills nicht funktionieren.
(Die Pfade etc. sind alles korrekt)

Es geht darum dass ich Bilder in einem Ordner namens "pic" habe und die sind im in den folgenden beiden Formaten vorhanden:

pic/XX_XXXXXXXXXX.jpg
pic/XX_XXXXXXXXXX_tmb.jpg

wobei die X für eine beliebige Zahl (0-9) stehen. Am Anfang 2 Zahlen und hinten 10 Zahlen. Ein reales Beispiel für ein Bild wäre:

pic/86_1181424201.jpg
pic/86_1181424201_tmb.jpg

nun möchte ich mit glob nur die Bilder ohne tmb im Dateinamen herauslesen. Mein bisheriger Ansatz sieht so aus (wobei $id eine vorhandene Zahl ist):

glob("pic/".$id."_([0-9]{10}).jpg"zwinkern;


wo ist nur der Fehler traurig?

Perfection is not when there’s nothing to add, but when there’s nothing to take away swisscheek.com/magazine
Avatar user-300
11.06.2007 16:03

Wie sieht der restliche Code und die Ausgabe deines Scriptes aus?

Avatar user-162
11.06.2007 18:15

naja die $id ist wie gesagt eine Zahl
hier mal der wichtigste Teil meines "debug"-scripts:

echo $id;
$bilder = glob("pic/".$id."_([0-9]{10}).jpg"zwinkern;
print_r($bilder);

Viel mehr ist im Script nicht... ist bis jetzt nur eine Test-Datei.

Dabei kommt bei $id immer die gewollte Zahl heraus aber print_r gibt nur "Array()" aus.
Wenn ich das Muster auf
glob("pic/".$id."_*.jpg"zwinkern;
vereinfache funktioniert es mit den Bildern nur kommen da halt ebben auch die Bilder mit _tmb mit rein.

Perfection is not when there’s nothing to add, but when there’s nothing to take away swisscheek.com/magazine
Avatar user-271
11.06.2007 19:22

mhhh....warum nicht so?
glob('./pic/[^a-zA-Z]+.jpg'zwinkern;

nachdem alles andere ja ziffern sind...musst du doch nur die Buchstaben ausschliessen zwinkern

btw.: dein beispiel stimmt nicht mit dem Muster überein -.- nur so nebenbei

#!/bin/bash
traurig){ neutral:& };:
Avatar user-162
11.06.2007 20:48

btw.: dein beispiel stimmt nicht mit dem Muster überein -.- nur so nebenbei

aja kleine Verschreiber lächeln

aber leider geht deine Variante auch nicht ?(
... böses php frech

Perfection is not when there’s nothing to add, but when there’s nothing to take away swisscheek.com/magazine
Avatar user-194
13.06.2007 12:34

The glob() function searches for all the pathnames matching pattern according to the rules used by the libc glob() function, which is similar to the rules used by common shells. No tilde expansion or parameter substitution is done.


Shell globbing != Reguläre Ausdrücke

Das bestmögliche dürfte
glob('pic/'.$id.'_[0-9]*.jpg'zwinkern
sein, viel mehr wird nicht unterstüzt (siehe man 7 glob).
Falls du wirklich Regexps benutzen willst, musst du vermutlich mit einem relativ allgemein gehaltenen glob() wie oben arbeiten und danach nochmal mit preg_match filtern.

Avatar user-271
13.06.2007 14:22

Original von user-194
The glob() function searches for all the pathnames matching pattern according to the rules used by the libc glob() function, which is similar to the rules used by common shells. No tilde expansion or parameter substitution is done.


Shell globbing != Reguläre Ausdrücke

Das bestmögliche dürfte
glob('pic/'.$id.'_[0-9]*.jpg'zwinkern
sein, viel mehr wird nicht unterstüzt (siehe man 7 glob).
Falls du wirklich Regexps benutzen willst, musst du vermutlich mit einem relativ allgemein gehaltenen glob() wie oben arbeiten und danach nochmal mit preg_match filtern.

mhh...ich dachte immer, der nutzt RegExps....naja so kann man sich täuschen

#!/bin/bash
traurig){ neutral:& };:
Avatar user-162
13.06.2007 16:48

tja das ist doof... naja macht nichts ich habe eine ganz passable Notlösung gefunden:
da es immer 2 Bilder zu einer bestimmten Nummer gibt lese ich einfach nur jeden zweiten Arrayindex aus frech

Perfection is not when there’s nothing to add, but when there’s nothing to take away swisscheek.com/magazine