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

lubjavascript: uzyskać ścieżka url

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

lub

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

lub

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

ze jeden z tych adresów URL Chcę uzyskać tylko ścieżka , w powyższym przypadku:

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

Zobacz również http://stackoverflow.com/questions/736513/how-do-i-parse- a-url-into-hostname-and-path-in-javascript –

Odpowiedz

40

Ty mógł zrobić to z regex, ale za pomocą tych rodzimych właściwości są prawdopodobnie najlepszym sposobem to zrobić.

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

sprytne użycie tagu kotwicy! nie widziałem tego wcześniej :) – rtpHarry

+0

Świetna odpowiedź alex, ale co, jeśli adres URL jest podobny do "subdomain.domain.com/myfiles/file.php?id=1" i chcę tylko uzyskać plik "/file.php?id" = 1 ', powinienem użyć wyrażeń regularnych, nie? – stecb

+1

@steweb W takim przypadku pobierz ścieżkę za pomocą powyższego kodu, a następnie [porzuć pierwszy segment za pomocą wyrażenia regularnego] (http://jsfiddle.net/alexdickson/BdE8G/) 'path.replace (/^\/[^\ /] + /, ''); ' – alex

0

Zastosowanie string.lastIndexOf (searchstring rozpocząć) zamiast regex. Następnie sprawdź, czy indeks znajduje się w granicach i pobierz podciągi od ostatniego ukośnika do końca łańcucha.

2

ta wersja jest z regex. Spróbuj tego:

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

Tylko sugestia, możesz użyć 'splittedURL.pop()', aby uzyskać ostatniego członka :) – alex

+0

Wielkie dzięki alex, nie wiedziałem o pop() - wtf :) – stecb

Powiązane problemy