Also hier ist noch jemand ohne Ahnung, aber vieleicht funktioniert das hier:
PHP-Code:
$needle = '/.(php|htm(l)?)$/';
if (!preg_match($needle,$haystack)) echo 'not ';
echo 'found';
So viel ich verstanden habe: Die »/« am Anfang und Ende sind die sog. Delimiter, müssen sein.
Das »$« am Ende heißt, daß $haystack mit der gesuchten Kette enden muß.
».« ist der escapte Punkt vor Deiner Dateiendung.
»|« heißt »oder«.
Die Konstruktion »(php|htm(l)?)« prüft, ob nach dem Punkt entweder ein »php« oder ein »htm« mit optional (dafür steht die »{0,1}« ersetzende Kurzform »?«) anschließendem »l« steht.
Weitere Kurzformen wären »+« für »1 oder mehrere« und »*« für »0 oder mehrere«.
Die beiden nachstehenden $needle prüfen in meinem Gästebuch die Plausibilität von e-mail- bzw. Web-Adressen (Das »^« am Anfang bedeutet, analog zum »$« am Ende, daß $haystack mit der gesuchten Kette beginnen muß).
$needle = '/^[a-z0-9_.-]+@[a-z0-9_.-]+.[a-z]{2,4}$/';
$needle = '/^(http://)?[a-z0-9_.-]+.[a-z]{2,4}(/[a-z0-9_./#~?&=-]*)*$/';