ereg Problem in PHP
Andreas
- php
Hi,
ich habe folgendes Problem. Ich habe eine Bildadresse http://www.domain.de/pics/0.jpg
Wenn ich jetzt auf einen Link klicke soll das nächste Bild geladen werden. Also http://www.domain.de/pics/1.jpg
Bis jetzt habe ich folgenden Code. Aber der funktioniert nicht. Kann mir jemand sagen woran es liegt?
ereg("^(.+)([0-9]+)$-(.jpg)$", $bildurl, $array1);
$array1[2] = $array1[2]+1;
$bildurl = $array1[1].$array1[2].$array1[3];
Noch mal in Kurz. Ich will das .jpg abspalten, die Nummer um eins hochzählen und alles wieder zusammenfügen.
Danke im Voraus.
Gruss Andreas
Hallo Andreas,
Bis jetzt habe ich folgenden Code. Aber der funktioniert nicht. Kann mir jemand sagen woran es liegt?
ereg("^(.+)([0-9]+)$-(.jpg)$", $bildurl, $array1);
Erstens: ereg solltest Du nicht verwenden, da das 1. langsam ist, 2. nicht binärsicher und 3. nicht gerade viel kann. Verwende lieber die preg-Funktionen.
Zweitens: Bauen wir uns mal einen regulären Ausdruck zusammen:
http://www.domain.de/pics/0.jpg
^
Du willst diese Zahl hier extrahieren
Dann formulieren wir den Teil einfach mal:
([0-9]+)
Jetzt schauen wir uns das an, was drum herum ist:
.jpg -> in einem regulären Ausdruck wird das zu: (.jpg)
http://..../ -> nachdem das der komplette Rest der Zeichenkette ist, kannst Du auch getrost (.*) nehmen. Allerdings musst Du der .*-Konstruktion sagen, dass sie nicht zu viel fressen soll, daher ein (.*?)
-> der reguläre Ausdruck ist:
(.*?)([0-9]+)(.jpg)
Das ganze packen wir jetzt noch in eine schöne preg-Funktion:
$res = preg_match ('/(.*?)([0-9]+)(.jpg)/', $bildurl, $array1);
Und schon hast Du Dein Problem gelöst.
Viele Grüße,
Christian
PS: Ein paar Links zum Thema:
http://www.dclp-faq.de/q/q-regexp-ereg.html
http://de3.php.net/preg_match
http://de3.php.net/manual/de/pcre.pattern.modifiers.php
http://de3.php.net/manual/de/pcre.pattern.syntax.php
http://www.dclp-faq.de/q/q-regexp-gierig.html
Hallo nochmal,
*argh* - ich Idiot habe natürlich die ^ und $-Zeichen vergessen - er soll ja schließlich die ganze Zeichenkette matchen und nicht nur einen Teil davon. Sorry.
(.*?)([0-9]+)(.jpg)
^(.*?)([0-9]+)(.jpg)$
$res = preg_match ('/(.*?)([0-9]+)(.jpg)/', $bildurl, $array1);
$res = preg_match ('/^(.*?)([0-9]+)(.jpg)$/', $bildurl, $array1);
Viele Grüße,
Christian
Danke für die schnelle Antwort. Klappt prima. Wusst nur nimmer, dass man des .jpg mit (.jpg) abtrennt. Danke
Gruss Andreas