Christian Seiler: ereg Problem in PHP

Beitrag lesen

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