![]() |
| | Themen-Optionen | Thema durchsuchen |
| | Nach oben #1 |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.516
|
Morgen, ich habe folgendes Problem. Ich möchte einen URL auf Korrektheit prüfen. Dabei soll natürlich auch berücksichtigt werden, dass sogenannte Umlaut-Domains ja mittlerweile erlaubt sind. Ich habe hier den folgenden Ausdruck gefunden: PHP-Code: Der scheint aber keine Umlaute mit zu berücksichtigen... Kann mir jemand helfen? Hier finde ich auch nicht wirklich das, was ich brauche. :-/ http://regexlib.com/RETester.aspx?regexp_id=1004 |
| | |
| | Nach oben #2 |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.516
|
Okay, ich hab nun das hier: PHP-Code: Meinungen? Am Rande: Sind eigentlich Umlaute in Subdomains möglich? Geändert von Ben (25.07.2008 um 13:29 Uhr) |
| | |
| | Nach oben #3 |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.516
|
Und nochmal ich, weil hier so viel los ist. Hat nur bedingt etwas mit obigem Problem zu tun, aber manchmal braucht man auch nur pragmatisch zu sein. Ich möchte überprüfen, ob ein String mit http oder https beginnt und ob mindestens ein Punkt vorhanden ist. Bestenfalls sollten hinter dem letzten Punkt nur eine begrenzte Anzahl von Zeichen erlaubt sein. Danke |
| | |
| | Nach oben #4 |
| Lutz Registriert seit: 14.08.2005 Ort: Nienburg / Weser
Beiträge: 687
|
Also erstmal: Es scheint, als würden auch Subdomains damit funktionieren, allerdings sollte man dann schon wissen, wie die Konvertierung abläuft, damit man das im DNS-Server entsprechend einstellen kann (sofern notwendig). Zur Abfrage selbst habe ich in meinen scripten folgenden RegEx genutzt: Code: '°(^|\s)((?:http|https|ftp)\://(?:[\w]+\.)+[\w]+(?:\:[\d]+)?(?:/[\S]*)*)(\s|$)°is' Achso, noch etwas: Die Seite zum RFC 1793 ist folgende: ftp://ftp.rfc-editor.org/in-notes/rfc1738.txt
__________________ Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll |
| | |
| | Nach oben #5 |
| Projektleiter Registriert seit: 30.11.2005 Ort: Bottrop
Beiträge: 1.133
|
Hmmm... das naheliegende geht nicht, weil? Code: ^https?://.*?\.\w{2,4}
Ansonsten: Ich hab zwar selbst auch noch keinen, aber bei URLs und E-Mail-Adressen sollte für die Verifikation echt kein Regex zum Einsatz kommen. Kann doch kein Mensch warten sowas. Edit: Das kommt davon, wenn man nebenher noch was anderes tut.
__________________ Patrick Gotthardts Weblog. |
| | |
| | Nach oben #6 |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.516
|
Danke, aber ich werde es so machen Bräuchte da aber nochmal Hilfe. Komme irgendwie nicht damit zu Recht, dass es "mindestens" einen Punkt geben muss. Als Nachtrag zur Ausgangsfrage bzw. deiner Antwort. Durch die neue Sonderzeichenregel (so nenn ich das jetzt mal) wird es eben relativ komplex. Siehe: http://de.wikipedia.org/wiki/Interna...chens.C3.A4tze .at = 34 neue Zeichen .de = 92 neue Zeichen .ch/.li = 32 neue Zeichen Das nur als Beispiel. Da ist der Kosten-Nutzen-Faktor bei einer pragmatischen Implementierung definitiv am größten. |
| | |
| | Nach oben #7 | |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.516
| Zitat:
Beispiel: http://www.regex-tester.de/uc_402_de.html | |
| | |
| | Nach oben #8 |
| Erfahrener Benutzer Registriert seit: 12.06.2006
Beiträge: 205
|
Dann brauchst du einen Greedy-Modifier bzw. musst den Ungreedy abstellen. Da ja nahezu alle Sonderzeichen erlaubt sind (also nicht nur Umlaute), wäre diese Lösung die richtige. Zusätzlich sollten noch Unterverzeichnisse erlaubt sein - also hintendran eine Überprüfung auf beliebig viele Slashs und weitere Zeichen. Außerdem sind bei der Prüfung fünfstellige TLDs nicht zugelassen - z.B. .travel oder .museum . Hier: http://www.regex-tester.de/uc_403_de.html (ohne Unterverzeichnis-Pattern). Geändert von FloB (25.07.2008 um 15:03 Uhr) |
| | |
| | Nach oben #9 | |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.516
| Zitat:
Kosten-Nutzen .. Wie oft wird so etwas auf einer Seite, wo sich private Leute aufhalten eingegeben? Ich glaube nicht, dass es sich da um mehr als 0,1% handelt. Demnach beschränke ich es einfach auf 4 (.info) und gut ist. Ich habe es aktuell nun so gemacht PHP-Code: Geändert von Ben (25.07.2008 um 15:51 Uhr) | |
| | |
| | Nach oben #10 |
| Lutz Registriert seit: 14.08.2005 Ort: Nienburg / Weser
Beiträge: 687
|
Ich bedenkt aber schon, dass es mit dem . auch möglich wäre Leerzeichen, Zeilenumbrüche, etc. in due URL einzubauen? Das darf man nämlich nicht (und macht auch keinen Sinn soetwas zuzulassen).
__________________ Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll |
| | |
| | Nach oben #11 | |
| Lutz Registriert seit: 14.08.2005 Ort: Nienburg / Weser
Beiträge: 687
| Zitat:
Ich frage mich übrigens, warum meinem RegEx niemand Beachtung zu schenken scheint, ist der zu kompliziert?
__________________ Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll | |
| | |
| | Nach oben #12 |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.516
|
Solange man keinen Schadcode einfügen kann .. EDIT: Ich habe ihn mir nicht angeschaut, weil er imho auf den ersten Blick nicht die Angaben aus Post#6 berücksichtigt. Da genau das aber in meinem speziellen Fall sehr wichtig ist .. ist eben die pragmatische Lösung rausgesprungen. |
| | |
| | Nach oben #13 |
| Lutz Registriert seit: 14.08.2005 Ort: Nienburg / Weser
Beiträge: 687
|
Nunja, da der Punkt JEDES beliebige Zeichen repräsentieren kann, stellt der RegEx zumindest keinen Schutz vor Schadcode dar. Eine SQL-Injection ist damit durchaus denkbar / möglich, wenn der Rest des Codes nicht passt. Ansonsten würde mich der Gedanke trotz Allem stören, dass der RegEx so "greedy" ist...
__________________ Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll |
| | |
| | Nach oben #14 |
| Erfahrener Benutzer Registriert seit: 12.06.2006
Beiträge: 205
|
Ja, zählen sollte man können Edit: Alternativ überprüft man auf die TLD + Endung und zusätzlich optionale Subdomains. Das erhöht die Sicherheit vor möglichen Injections. Das Whitespace-Problem sollte natürlich ausgeschlossen werden. |
| | |
| | Nach oben #15 |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.516
|
Bevor das weggeschrieben wird, wird sowieso noch mit stripslashes und Konsorten gearbeitet. Ich sehe aktuell nicht, wie mehr "Schaden", als ein "kaputter" Link entstehen sollte. Wenn jemand http://test_blubb mist.de eingibt .. jo, und? |
| | |
| | Nach oben #16 |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.516
|
Ich werd noch wahnsinnig! Habe noch etwas weitergemengt und habe nun das hier als RegExp Code: https?:\/\/.{2,}\.\w{2,}
Mich stört das \w am Ende, da es ja alphanumerische Zeichen durchlässt. Eine Domainendung kann aber ja nur aus Buchstaben bestehen, oder? Bei dem ganzen TLD-Hickhack weiß ich mittlerweile gar nichts mehr bestimmt! Ich habe versucht das \w einfach gegen ein \D oder ein [a-z] auszutauschen, aber das bringt dann bei der oben verlinkten Testreihe nicht die gewünschten Ergebnisse. Danke für die weitere Hilfe |
| | |
| | Nach oben #17 |
| Lutz Registriert seit: 14.08.2005 Ort: Nienburg / Weser
Beiträge: 687
|
Meinst du, weil der RegEx auch auf "http://www.ichbineineurlohnekorrektetld.tld123" passt? Dann müsstest du folgendes ans Ende einfügen: Code: (?:/|\s|$|:[\d]+)
__________________ Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll |
| | |
| | Nach oben #18 |
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 2.374
| das widerspricht sich!
__________________ Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! |
| | |
| | Nach oben #20 | |
| Erfahrener Benutzer Registriert seit: 18.03.2005
Beiträge: 597
|
@Ben Zitat:
Geht es um URLs die noch nicht vorhanden sind? Ansonsten würde ich die URL mit einer CURL-Abfrage einfach testen. | |
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | Thema durchsuchen |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| SessionID per Url auf Portal-Seite | Artemis | Fragen ans Team | 7 | 09.07.2007 20:25 |
| [JAVA] Wie man aus Java mit einem PHP-Script kommuniziert | sparrow | Tutorials | 0 | 25.03.2006 22:24 |
| Variable auf verschiedene Faktoren prüfen. | Doggi | PHP-Programmierung | 22 | 14.12.2005 23:33 |
| [PHP] Aktuell gespielten Titel von XMMS auf einer Webseite in einer Grafik anzeigen | Corvin | Tutorials | 0 | 28.11.2005 16:26 |
| [PHP] Wie übergebe ich Daten per URL? | Ben | Tutorials | 0 | 05.12.2004 14:36 |