2009-11-08 7 views
9

Çocuklar Bana bu konuda yardımcı olabileceğinizi umarak bir sorum var. Bir yer imi sahibim;Geçerli URL'yi al, ancak http: // parça bookmarklet'i olmadan!

javascript:q=(document.location.href);void(open('http://other.example.com/search.php?search='+location.href,'_self ','resizable,location,menubar,toolbar,scrollbars,status')); 

hangi cari web sayfasının URL'sini alır ve başka bir web sitesi içinde arayın. Bu yer işaretini kullandığımda, http:// dahil olmak üzere tüm URL'yi alır ve bunu arar. Ancak şimdi bu bookmark'ı değiştirmek istiyorum, bu yüzden sadece www.example.com veya sadece example.com (http:// olmadan) ve bu url'yi arayın. Bunu yapmak mümkün mü ve bu konuda bana yardımcı olabilir misiniz?

Teşekkür ederiz!

cevap

7

Bu

location.href.replace(/https?:\/\//i, "") 
+0

. Ancak, mevcut Url, ör. 'Http: //somesite.com/query=http: // someothersite.com/blahblah'. "Http: //" nin tüm örnekleri yalnızca ilk olayın yerini almayacaktır. 'Https: //' için de çalışmıyor. –

+2

Sabit. Http/https + caseinsensitve eşleşmesi işlenir. Ayrıca sadece ilk oluşumu değiştirir. – jitter

+0

Tamam, iyi bir çaba. +1 –

3

Kullanım document.location.host yerine document.location.href yapmalıdır. Bu, tam URL'yi değil, yalnızca ana bilgisayar adını içerir.

+0

Dünyadaki herkesin, konum nesnesi zaten Gumbo'nun önerdiği gibi sizin için yaptığında neden normal ifadeler önerdiğinden emin değilim. Dokümantasyon harika bir şey: https://developer.mozilla.org/En/DOM/Window.location – epascarello

+1

Oh evet, "str = location.host + location.path + location.search" kullanmak daha kolay. Liman numarası nasıl? –

+1

@ o.k.w: Bostjan görünüşe göre sadece ana bilgisayarı ve tam URL'yi bilmek istemiyor. – Gumbo

-1

Web Sitesi.com other.example.com üzerinde denetiminiz var mı? Bu muhtemelen sunucu tarafında yapılmalıdır.

Hangi durumda:

preg_replace("/^https?:\/\/(.+)$/i","\\1", $url); 

çalışmalıdır. Veya, str_replace(...) kullanabilirsiniz, ancak farkında olmasını 'http: //' şerit olabileceğini olabilir URL'nin içinde bir yerden:

str_replace(array('http://','https://'), '', $url); 

EDIT: yoksa sadece ana bilgisayar adını isterseniz, sen parse_url(...) deneyebilir?

+0

Bu bir JavaScript sorusudur; bunlar PHP fonksiyonları. – mAAdhaTTah

-1

regex eşleştirme yoluyla javascript replace kullanma:

javascript:q=(document.location.href.replace(/(https?|file):\/\//,''));void(open('http://website.com/search.php?search='+q,'_self ','resizable,location,menubar,toolbar,scrollbars,status')); 

değiştirin (? Https | dosyası) seçeneği ile örneğin ftp, gopher, telnet vb.

+0

aslında bu protokol için üç eğik çizgi kullanır gibi dosya için işe yaramaz – jitter

+0

@jitter: "dosya" dahil edilmemesi gerekiyordu, pratik bir kullanımı yok.Kodu makinemde yerel olarak test ederken eklenmişti. Her neyse, gerçekten önemli değil :) –