regulärer ausdruck

Hi Leute

kann mir jemand vielleicht mal erklären wieso bei dem regülären ausdruck
man keine webseite mit mehr als 23 Zeichen speichern kann?

'/^(http:\/\/)?([a-zA-Z][a-zA-Z0-9\-\_]{1,15}\.)+[a-zA-Z]{2,5}$/'ich begrenze doch mit 1,15 den mittleren teil auf bis zu 15 stellen sowie den letzten Part auf 2 bis 5 stellen?

Danke schonmal im Voraus!

Sowas wie lololol.de - lololol
Denn du sagst ihm ja:
Teil1: http:// kann vorkommen, muss abe rnicht.

Teil2: Dann sagst du: starte mit Buchstaben. Und dann 1-15 zeichen von den oben stehenden Zeichen.
Dann folgt ein punkt.

Teil2 muss mindest einmal vorkommen.

Teil 3: Deine Domainendung

Und mein beispiel funktionietr nicht?

hmm kann dir jetzt nicht ganz folgen wo steckt denn jetzt der fehler?
Ist doch eigentlich so korrekt wie ich das aufgebaut habe hmm??

http muss nicht geschrieben werden kann aber…
danach www.beispiel.de mit dem 2 teil wäre der „www“ part und „beispiel“ part abgedeckt,
am ende dann noch die domainendung…

Ich debugge nur mit dir lol :smiley:
Leider wurde meine Beispiel URL nun vom Forum geparsed. :slight_smile:
Welche URL funktioniert denn nicht?
Hab den Ausdruck mal getestet und er funktioniert wunderbar bei mir.
Schöne Seite zum testen von regex ist übrigens:
regex online tester - regular expressions

Hab deinen regulären Ausdruck da getestet (/ Delimiter dort entfernen)
preg_match links auswählen.
Habe als teststring mal:
[noparse]
http://maps.googlelololo.lollol.de
und
http://maps.googlelolololollol.de
probiert
[/noparse]
Ersteres funktioniert. beim 2. meckert er.

Edit: Steckt der fehler vielleicht im PHP Code vor oder nach dem regex?

problem ist das er keine webseite speichert die aus mehr als 23 Zeichen besteht.
Aber wieso grenzt er das bei 23 ein?
Ist mir ein rätsel !

Und wieso meckert er beim 2???
http://maps.googlelolololollol.de

Soltle auf jeden Fall kein regex Problem sein. Speicherst du die Daten in einer Mysql-Datenbank? Falls ja, teste mal unter welchen Datentyp du die URL speicherst? Falls varchar: ist dieser auf 23 zeichen begrenzt? Nehme für die url dann besser den Datentyp Text, da du nie weisst wie lang die URL ist.

Edit:

Da googlelolololollol 18 zeichen hat und somit mehr als 15 :stuck_out_tongue:

ja speicher ich in einer mysql datenbank! varchar40

So also hab folgendes getestet:

 [www.urlaus23zeichenn.de](http://www.urlaus23zeichenn.de/) FUNKTIONIERT!

(der mittlere Teil hat hier doch 16 Zeichen? und nicht 15? wieso funktioniert das dann?)

www.urlaus24zeichennn.de FUNKTIONIERT NICHT!

verstehe jetzt 2 sachen nicht:
einmal wie kommt er überhaupt auf die Begrenzung von 23 , weißt du das?
und das mit der url das er die speichert bei 16 zeichen hmmm

Da du vorher sagst 1 Zeichen und dann nochmal 1-15 zeichen. macht im maximum 16 zeichen. Wenn der komplette Teil 15 Zeichen haben soll musst du 1,14 schreiben
Denn schau:

([a-zA-Z] <-- 1 zeichen [a-zA-Z0-9\-\_]{1,15} <-- 1 bis 15 zeichen\.) 1+15 zeichen macht 16 :smiley:

Edit: hast du den regex denn selbst egschrieben? :smiley:
Denn du sagst ja mit dem mittleren part nur. Dass 16 zeichen kommen dürfen und dann muss ein Punkt kommen.
Also kann eine URL unentdlich lang sein. hauptsache nach 16 zeichen kommt ein Punkt. Teste mal folgende URL
[noparse]
http://meine.tolle.url.aus.mehr.als.drei.und.zwanzig.zeichen.de
[/noparse]

soltle funktionieren

deine URL funktioniert :wink:
ohja stimmt das hab ich nicht hinzugerechnet.
Ist schon etwas her wo ich den regex mir zusammen gebastelt habe.

müsste ja jetzt eigentlich nur 1-30 machen somit würde das ganze auch urls mit mehr als 23 zeichen akzeptieren;)

jetzt versteh ich das :smiley:
Du rechnest das http die ganze zeit mit dazu :wink:

[noparse]
http:// ← 7 zeichen
irgendeineseitee ← 16 zeichen
macht 23 :stuck_out_tongue:
Die URL kann auch so länger sein. Du meinst wahrscheinlich die länge des Domainnamen. Dafür musst du dein 1-15 abändern, wie du gesgat hast :wink:
[/noparse]

ja die komplette url meinte ich mit 23 zeichen;)
Änder das jetzt so ab, wie ich oben schon erwähnte :slight_smile: