URL-String intelligent kürzen
Capior
- sonstiges
Hallo
Hat mir jemand PER ZUFALL ;-) eine funktion/regex (wenn möglich in VB(S), JS, C# [am liebsten in VB]), die mir lange urls nach folgendem muster kürzt:
-----------------
"http://www.einlink.de/r/nicht/weiss/warum/er/so/lang/ist.html"
wird zu
"www.einlink.de/.../ist.html"
und
"http://einlink.de/r/weiss/warum/er/so/lang/ist.html"
wird zu
"einlink.de/.../ist.html"
-----------------
Vielen Dank und tschüss
Capior
Hi,
Hat mir jemand PER ZUFALL ;-) eine funktion/regex [...]
Du willst
Es sollte eigentlich nicht schwer fallen, mit dem für ihre Verwendung notwendige Grundwissen hierzu eine Regular Expression zu erstellen.
Cheatah
hi,
Du willst
- das (weitgehend statische) Protokoll entfernen und
- alles zwischen dem anschließend ersten bis zum letzten Slash (hinter dem noch Zeichen folgen) durch eine statische Zeichenkette ersetzen.
und anschließend will er sich vermutlich wundern, dass
http://www.einlink.de/r_nicht_weiss_warum_er_so_lang_ist.html
immer noch sein layout sprengt :-)
gruß,
wahsaga
Moin,
Hat mir jemand PER ZUFALL ;-) eine funktion/regex (wenn möglich in VB(S), JS, C# [am liebsten in VB]), die mir lange urls nach folgendem muster kürzt:
"http://www.einlink.de/r/nicht/weiss/warum/er/so/lang/ist.html"
wird zu
"www.einlink.de/.../ist.html"
und
"http://einlink.de/r/weiss/warum/er/so/lang/ist.html"
wird zu
"einlink.de/.../ist.html"
Was spricht gegen s!http://(?:www.)?([^/]+)/.*/([^/]*)!\1/.../\2^!?
Um solche und ähnliche RegExpe zu erstellen gehst du einfach von links nach rechts durch deine Beispiel, schaust dir an was drin vorkommen muß (direkt übernehmen), was evt. optional ist (mit ? quantifizieren) und was du später noch brauchst (mit () capturen) und setzt anschließend das was du noch brauchst wieder richtig zusammen. Ist doch eigentlich gar nicht so schwer.
Hi,
Was spricht gegen s!http://(?:www.)?([^/]+)/.*/([^/]*)!\1/.../\2^!?
Ach, RegExpr sind doch für Lamer - außerdem funktionieren sie erst ab JavaScript 1.2.
Das kann man auch schon mit JavaScript 1.0 lösen - locker in einer Befehlszeile:
url="http://www.einlink.de/r/weiss/warum/er/so/lang/ist.html";
alert(url.substring(url.indexOf("//")+2,url.indexOf("/",url.indexOf("//")+2))+(((url.substring((url.substring(0,url.indexOf("/",url.indexOf("//")+2))).length,url.lastIndexOf("/")))?"/...":""))+url.substring(url.lastIndexOf("/")));
Ist doch eigentlich gar nicht so schwer.
Sehe ich auch so.
Gruß, Cybaer
PS: ;->
Hi,
Was spricht gegen s!http://(?:www.)?([^/]+)/.*/([^/]*)!\1/.../\2^!?
Die Performance-Bremse (?:www.)? ;-)
Insbes. weil dort anstelle von . . stehen sollte - aber da das keinen / enthält und wegen des folgenden ? optional ist, wird es vom folgenden ([^/]+) mit-erfaßt.
Und warum setzt Du ans Ende der gekürzten URL ein ^?
Ein $ mehr kann auch nicht schaden (vor dem 2.!) - ich verlaß mich lieber nicht auf die Greedy-Eigenschaften.
cu,
Andreas
Moin,
Was spricht gegen s!http://(?:www.)?([^/]+)/.*/([^/]*)!\1/.../\2^!?
Die Performance-Bremse (?:www.)? ;-)
-v bitte. Also ich weiss ja nicht wie die handelsüblichen RegExp-Engines das behandeln, aber so wie ich es gelernt habe stellt das keine besondere Belastung dar.
Insbes. weil dort anstelle von . . stehen sollte
Jaja, schon gut, den vergesse ich bei solchen Gelegenheiten immer :)
aber da das keinen / enthält und wegen des folgenden ? optional ist, wird es vom folgenden ([^/]+) mit-erfaßt.
Hier[tm] nicht. Per default ist erstmal alles greedy und wenn da was zum Fressen ist dann wird es gefressen. Mir ist noch keine RegExp-Engine begegnet die eigenmächtig die Ausdrücke umsortieren wollte (was mit den darunterliegenden DFAs auch 'etwas' schwierig wäre).
Und warum setzt Du ans Ende der gekürzten URL ein ^?
Fipptehler.
Ein $ mehr kann auch nicht schaden (vor dem 2.!) - ich verlaß mich lieber nicht auf die Greedy-Eigenschaften.
Ich schon. Also ich hatte überlegt es reinzusetzen, bin dann aber zu dem Schluß gekommen dass es nicht nötig ist.
hallo
Moin,
Was spricht gegen s!http://(?:www.)?([^/]+)/.*/([^/]*)!\1/.../\2^!?
ok, danke, werds mal versuchen...
Um solche und ähnliche RegExpe zu erstellen gehst du einfach von links nach rechts durch deine Beispiel, schaust dir an was drin vorkommen muß (direkt übernehmen), was evt. optional ist (mit ? quantifizieren) und was du später noch brauchst (mit () capturen) und setzt anschließend das was du noch brauchst wieder richtig zusammen. Ist doch eigentlich gar nicht so schwer.
schwer schon nicht, vielleicht eher schwierig..(s. Post von MudGuard) ;-)
danke und tschüss
capior