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

veyajavascript: get url yolu

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

veya

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

veya

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

Sadece yol almak istiyorum bu url'lerin ya birinden Yukarıdaki durumda:

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

Ayrıca bkz http://stackoverflow.com/questions/736513/how-do-i-parse- a-url-içine-hostname-ve-yol-in-javascript –

cevap

40

Sen olabilir regex ile bunu ama bunlar doğal özelliklerini kullanarak tartışmasız bunu yapmak için iyi yoldur.

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

çapa etiketinin akıllıca kullanımı! Daha önce görmedim :) – rtpHarry

+0

Büyük cevap alex, ama ya url 'subdomain.domain.com/myfiles/file.php?id=1' gibi ise ve sadece '/file.php?id' i almak istiyorum = 1 ', regex kullanmalıyım, hayır? – stecb

+1

@steweb Bu durumda, yukarıdaki kodu kullanarak yolunuzu alın ve ardından [bir regex ile ilk segmenti boşaltın] (http://jsfiddle.net/alexdickson/BdE8G/) 'path.replace (/^\/[^\ /] + /, ''); ' – alex

0

Kullanım string.lastIndexOf yerine regex ait (aranacak, start). Sonra dizinin sınırlar içinde olup olmadığını kontrol edin ve son eğik çizgiden dizginin sonuna kadar alt dizini alın.

2

Bu sürümde regex kullanılmıştır. Bu deneyin: Douglas Crockford kitabı olarak

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

Sadece bir öneri olarak, son üyeyi almak için splittedURL.pop() 'yi kullanabilirsiniz :) – alex

+0

Çok teşekkürler alex, pop hakkında bilmiyordum() - wtf :) – stecb