2010-12-21 18 views
12
var url = 'http://domain.com/file.php?id=1'; 

oderjavascript: get URL-Pfad

var url = 'https://domain.us/file.php?id=1' 

oder

var url = 'domain.de/file.php?id=1'; 

oder

var url = 'subdomain.domain.com/file.php?id=1' 

aus einer dieser URLs möchte ich nur der Weg bekommen , im obigen Fall:

var path = '/file.php?id=1'; 
+0

Siehe auch http://stackoverflow.com/questions/736513/how-do-i-parse- a-url-in-hostname-und-pfad-in-javascript –

Antwort

40

Sie konnte tut es mit Regex, aber mit diesen nativen Eigenschaften ist wohl der besten Weg, es zu tun.

var url = 'subdomain.domain.com/file.php?id=1', 
    a = document.createElement('a'); 

a.href = 'http://' + url; 
var path = a.pathname + a.search; // /file.php?id=1 

See it on jsFiddle.net

+0

clevere Verwendung der Anker-Tag! nicht gesehen es vorher getan :) – rtpHarry

+0

Große Antwort alex, aber was ist, wenn die URL ist wie 'subdomain.domain.com/myfiles/file.php?id=1' und ich will nur die '/file.php?id bekommen = 1 ', sollte ich Regex verwenden, nein? – stecb

+1

@steweb In diesem Fall den Pfad mit dem obigen Code ermitteln und dann [das erste Segment mit einer Regex abbrechen] (http://jsfiddle.net/alexdickson/BdE8G/) 'path.replace (/^\/[^\ /] + /, ''); ' – alex

0

Verwenden string.lastIndexOf (search, Start) anstelle einer regulären Ausdruck. Überprüfen Sie dann, ob der Index innerhalb der Grenzen liegt und eine Teilzeichenfolge vom letzten Schrägstrich bis zum Ende der Zeichenfolge erhält.

2

Diese Version ist mit Regex. Probieren Sie dies aus:

var splittedURL = url.split(/\/+/g); 
var path = "/"+splittedURL[splittedURL.length-1]; 
+1

Nur ein Vorschlag, Sie könnten 'splittedURL.pop()' verwenden, um das letzte Mitglied zu bekommen :) – alex

+0

Vielen Dank Alex, ich wusste nicht über pop() - wtf :) – stecb