Willkommen in der Webstatt Zum Webstatt Blog und Stories
der_nic der_nic am 11.06.07 17: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");

wo ist nur der Fehler :(?

netcup.de Warum gibt es hier Werbung?
sili sili am 11.06.07 18:03

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

der_nic der_nic am 11.06.07 20: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");
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"); vereinfache funktioniert es mit den Bildern nur kommen da halt ebben auch die Bilder mit _tmb mit rein.

nuit nuit am 11.06.07 21:22

mhhh....warum nicht so?
glob('./pic/[^a-zA-Z]+.jpg');
nachdem alles andere ja ziffern sind...musst du doch nur die Buchstaben ausschliessen ;)

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

der_nic der_nic am 11.06.07 22:48

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

aja kleine Verschreiber :)

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

hoffie hoffie am 13.06.07 14:34

Quote
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') 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.

nuit nuit am 13.06.07 16:22

Quote
Original von hoffie
[quote]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') 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.[/quote]
mhh...ich dachte immer, der nutzt RegExps....naja so kann man sich täuschen

der_nic der_nic am 13.06.07 18: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 :P

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt