http:// mit ereg überprüfen

Cemil

Erfahrenes Mitglied
Maraba,
ich möchte überprüfen, ob die url richtig eingeben wurde und zwar mit folgendem Code:

Code:
if (!ereg("^(([http://])+([a-z]).)+([a-z0-9]).)+([a-z]{2,3})$",$url))

Irgendwo hab ich einen Denkfehler, aber weiss nicht wo. Ich erhalte keine Warn- oder Fehlermeldungen. Hab das gleiche für E-Mail geschrieben und das funktioniert.

Grüsse
 
Zuletzt bearbeitet:
Mit PHP wird hinter http:// ein Kommentar ausgegeben, deshalb
musste ich es mit Code ausgeben lassen.

Sorry.

Grüsse
 
Zuletzt bearbeitet:
Ich würde das Ganze mit [phpf]preg_match[/phpf] lösen.

PHP:
if(!preg_match("~(http://)([A-Za-z0-9]*)(\.)([A-Za-z0-9]*)(\.)([A-Za-z]{2,4})~isU",$url))


(bei eventuellen php-Tag Schwierigkeiten hier nochmal im Code-Tag:

Code:
if(!preg_match("~(http://)([A-Za-z0-9]*)(\.)([A-Za-z0-9]*)(\.)([A-Za-z]{2,4})~isU",$url))
 
Hallo Sebastian,
vielen Dank für Deine schnelle Anwort.

Hat sehr gut funktioniert. Danke.

Grüsse
 
Hallo Sebastian,
in Deinem Code habe ich einen Fehler entdeckt (vielleicht irre ich mich auch).
Wenn ich eine 1-stellige Domain eingebe, erhalte ich eine Fehlermeldung, logisch.

Wenn ich eine 2 oder 3-stellige Domain eingebe (.ch/.com), da gibt es keine Probleme, wird akzeptiert.

Aber sobald ich eine 4/5/6/etc.-stellige Domain eingebe, wird diese ohne Problem akzeptiert, danach erhalte ich keine Fehlermeldung. Was stimmt da nicht?

Grüsse

CEMO
 
Der Fehler lag darin, dass er bei einer URL wie "http://www.test.abcde", die 4 Buchstaben in der TLD gefunden hat. Alles andere was danach kommt, war dem Pattern egal. Nach der URL sollte aber Schluss sein, d.h. man muss noch überprüfen, ob ein Leerzeichen oder Zeilenende danach folgt.

Das Ganze sieht dann so aus und funktioniert einwandfrei:

Code:
if(!preg_match("~(http://)([A-Za-z0-9]*)(\.)([A-Za-z0-9]*)(\.)([A-Za-z]{2,4})(\s|\$)~isU",$url))

s. die letzte Klammer: \s ist ein Leerzeichen, \$ ein Zeilenende. Der | dazwischen steht für "oder". Soviel schonmal zum Thema PCRE (Perl Compatible Regular Expressions). Ein Tutorial von Tim dazu gibts im PHP-Tutorials-Bereich.

Danke noch an reima, der meinen Denkanstoß vollendet hat. ;)
 
Zuletzt bearbeitet:
Alles klar. Schon wieder etwas dazu gelernt. Danke euch.

Wünsch euch noch einen schönen Tag.

Griessli vo dr Schwiiiz.:-)
 
Zurück