erkennen ob www. oder http://www.
Holger
- perl
0 Cheatah0 Holger
0 Pascal R.0 lois
Hallo!
Das ist jetzt vielleicht eine blöde Frage, habe im Archiv auch schon so was ähnliches gefunden ( http://forum.de.selfhtml.org/archiv/2000_3/t21729.htm ), damit geht's aber nicht so recht.
Problem: In einem Gästebuch kann man seine Hompage-URL eintragen. Manche geben sie so ein: "http://www.homepage.xx", manche so: "www.homepage.xx".
Wenn die URL ohne "http://" eingegeben wird, soll das Script eben "http://" anhängen. Ich dachte, das mache ich dann so: $url =~ s!www(.+?)!http://www$1!ig; Jetzt werden an die URLs, die mit "http://" eingegeben werden nochmal "http://" angehängt (weil ja trotzdem "www" vorkommt). Gibt's da eine einfache Lösung?
Hi,
$url =~ s!www(.+?)!http://www$1!ig;
$url =~ s!^www.!http://www!i; # Option /g brauchst Du nun _wirklich_ nicht :-)
oder
$url =~ s!^(?!http://)!http://!i; # ungetestet
Allgemein:
perldoc perlre
Cheatah
Hi,
$url =~ s!www(.+?)!http://www$1!ig;
$url =~ s!^www.!http://www!i; # Option /g brauchst Du nun _wirklich_ nicht :-)
oder
$url =~ s!^(?!http://)!http://!i; # ungetestet
Allgemein:
perldoc perlre
Cheatah
... Ah, doch so einfach! DANKE!
Holger
Moin!
... Ah, doch so einfach! DANKE!
Vor allem wichtig: Mache keinerlei Annahmen darüber, wie URLs normalerweise beginnen! 'www' ist ein Namensbestandteil, der nur zufällig in vielen URLs vorkommt. Viele User bei T-Online haben z.B. einen Alias in der leichter merkbaren Form "name.bei.t-online.de". Da kommt dann noch "http://" davor, und die URL ist komplett. Aber nirgendwo ist auch nur ein einziges 'www' zu sehen.
Du solltest also nur prüfen, ob die URL mit 'http://' beginnt, und das nötigenfalls hinzufügen.
Oder eben (die Variante wurde auch schon genannt) du formulierst dein Formular so, daß keinerlei Verwechslung möglich ist, und alle schön 'http://' an den Anfang ihrer URL schreiben.
- Sven Rautenberg
Hoi,
Oder eben (die Variante wurde auch schon genannt) du formulierst
dein Formular so, daß keinerlei Verwechslung möglich ist, und alle
schön 'http://' an den Anfang ihrer URL schreiben.
Programmierer-Regel Nr. 1: Verlasse dich *nie*mals auf Usereingaben.
Gruesse,
CK
Moin!
Programmierer-Regel Nr. 1: Verlasse dich *nie*mals auf Usereingaben.
Programmierer-Regel Nr. 2: Vermeide Redundanz[1] ;-)
SCNR
Viele Gruesse,
Einbecker
Hi,
Programmierer-Regel Nr. 1: Verlasse dich *nie*mals auf Usereingaben.
Programmierer-Regel Nr. 2: Vermeide Redundanz[1] ;-)
Programmierer-Regel Nr. 3: Vermeide unnötige Wiederholungen.
SCNR
Dito :-)
Cheatah
hi!
Programmierer-Regel Nr. 1: Verlasse dich *nie*mals auf Usereingaben.
Programmierer-Regel Nr. 2: Vermeide Redundanz[1] ;-)
Programmierer-Regel Nr. 3: Vermeide unnötige Wiederholungen.
H.B. Fyfe Murphy's Laws Of Computer Programming
LAWS OF COMPUTER PROGRAMMING: I. Any given program, when running, is obsolete.
LAWS OF COMPUTER PROGRAMMING: II. Any given program costs more and takes longer.
LAWS OF COMPUTER PROGRAMMING: III. If a program is useful, it will have to be changed.
LAWS OF COMPUTER PROGRAMMING: IV. If a program is useless, it will have to be documented.
LAWS OF COMPUTER PROGRAMMING: V. Any program will expand to fill available memory.
LAWS OF COMPUTER PROGRAMMING: VI. The value of a program is proportional to the weight of its output.
LAWS OF COMPUTER PROGRAMMING: VII. Program complexity grows until it exceeds the capabilities of the programmer who must maintain it.
LAWS OF COMPUTER PROGRAMMING: VIII. Any non-trivial program contains at least one bug.
LAWS OF COMPUTER PROGRAMMING: IX. Undetectable errors are infinite in variety, in contrast to detectable errors, which by definition are limited.
LAWS OF COMPUTER PROGRAMMING: X. Adding manpower to a late software project makes it later.
bye, Frank!
Hi,
Programmierer-Regel Nr. 1: Verlasse dich *nie*mals auf Usereingaben.
exakt. Wir haben so ein Formular, welches ein Eingabefeld mit value="http://" vorbelegt; die Ergebnisse werden uns per Mail zugesandt. Dabei gibt es allerhand, öhm, Merkwürdigkeiten. Der wohl krasseste Fall war aber folgende "URL":
www.domain.dehttp://
In diesem Sinne,
Cheatah
Hi!
Wenn die URL ohne "http://" eingegeben wird, soll das Script eben "http://" anhängen. Ich dachte, das mache ich dann so: $url =~ s!www(.+?)!http://www$1!ig; Jetzt werden an die URLs, die mit "http://" eingegeben werden nochmal "http://" angehängt (weil ja trotzdem "www" vorkommt). Gibt's da eine einfache Lösung?
Mmh, einfach das Formularfeld mit http:// vorbelegen, dann sparst du dir das alles...
Gruß,
Pascal
Moin!
Mmh, einfach das Formularfeld mit http:// vorbelegen, dann sparst du dir das alles...
Und was waere, wenn der User dann das http:// ueberschreibt? Wenn du die URI dann als link einbindest, sieht das mehr als peinlich aus - Und "das alles" ist ein kleiner Perl-RegExp - So what?
Viele Gruesse,
Einbecker
Hallo!
Das ist jetzt vielleicht eine blöde Frage, habe im Archiv auch schon so was ähnliches gefunden ( http://forum.de.selfhtml.org/archiv/2000_3/t21729.htm ), damit geht's aber nicht so recht.
Problem: In einem Gästebuch kann man seine Hompage-URL eintragen. Manche geben sie so ein: "http://www.homepage.xx", manche so: "www.homepage.xx".
Wenn die URL ohne "http://" eingegeben wird, soll das Script eben "http://" anhängen. Ich dachte, das mache ich dann so: $url =~ s!www(.+?)!http://www$1!ig; Jetzt werden an die URLs, die mit "http://" eingegeben werden nochmal "http://" angehängt (weil ja trotzdem "www" vorkommt). Gibt's da eine einfache Lösung?
eine andere möglichkeit:
$url = ($url =~ /http:///) ? $url : "http://$url";
lois
Hi,
$url = ($url =~ /http:///) ? $url : "http://$url";
die Variante ist nicht schlecht; allerdings kann man sich dann auch gleich die (kostenintensive) RegExp sparen und mit index() arbeiten.
Cheatah
Moin!
$url = ($url =~ /http:///) ? $url : "http://$url";
die Variante ist nicht schlecht; allerdings kann man sich dann auch gleich die (kostenintensive) RegExp sparen und mit index() arbeiten.
Da faellt mir eigentlich eines zu ein: TMTOWTDI[1] ;-)
Viele Gruesse,
Einbecker
Hi,
TMTOWTDI[1] ;-)
hm, wenn hinter dem ersten "T" noch ein "I" ist, kann man es fast aussprechen... darum gefällt mir die Variante besser *g*
Btw: Und wenn einem MTOW einfällt, sollte man sich darüber Gedanken machen, welcher am performantesten flutscht.
Cheatah
Moin auch!
$url = ($url =~ /http:///) ? $url : "http://$url";
die Variante ist nicht schlecht; allerdings kann man sich dann auch gleich die (kostenintensive) RegExp sparen und mit index() arbeiten.
Stimmt, aber die obere kann man schnell noch auf
$url = 'http://' . $url unless ($url =~ m|[1][a-z0-9.+-]+://|);
# RFC2396 compliance untested
erweiteren, fuer den Fall, dass jemand eine ftp- oder gopher-Adresse als Homepage eintraegt. ;-)
So long
a-z ↩︎