2009-11-08 7 views
9

얘들 아이 질문에 나를 도와 줄 수 있기를 바란다. 나는 북마크릿을 가지고있다.http : // part 북마크 릿없이 현재 URL을 가져옵니다!

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

현재 웹 페이지의 URL을 다른 웹 사이트에서 검색합니다. 이 북마크릿을 사용하면 http://을 포함한 전체 URL을 검색하여 검색합니다. 하지만 지금은이 북마클릿을 변경하여 www.example.com 또는 example.com (http:// 제외) 만 사용하고이 URL을 검색하려고합니다. 이것을 할 수 있습니까? 이걸 가지고 나를 도울 수 있습니까?

감사합니다.

답변

7

이것은

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

. 그러나 현재 URL이 예를 들어. 'http : //somesite.com/query=http : // someothersite.com/blahblah'. "http : //"의 모든 인스턴스가 첫 번째 발생뿐만 아니라 바뀝니다. 'https : //'에도 작동하지 않습니다. –

+2

해결되었습니다. http/https + caseinsensitve 일치를 처리합니다. 또한 첫 번째 발생 만 대체합니다. – jitter

+0

좋습니다. +1 –

3

사용 document.location.host 대신 document.location.href해야한다. 여기에는 전체 URL이 아니라 호스트 이름 만 포함됩니다.

+0

Gumbo가 제안한대로 위치 개체가 이미 당신을 대신해서 정규식을 제안한 이유는 누구나 알 수 있습니다. 문서는 매우 좋습니다 : https://developer.mozilla.org/En/DOM/Window.location – epascarello

+1

아, 그렇습니다. "str = location.host + location.path + location.search"를 사용하는 것이 더 쉽습니다. 포트 번호는 어떻습니까? –

+1

@ o.k.w : Bostjan은 분명히 전체 URL이 아닌 호스트를 알고 싶어합니다. – Gumbo

-1

website.com/ other.example.com? 이것은 아마도 서버 측에서 수행되어야합니다.

하는 경우 :

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

작동합니다. 또는, str_replace(...) 사용하지만 알고 그 '에 http : //'스트립 수도 수있는 URL 내부 어딘가에서 :

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

편집 : 아니면 그냥 호스트 이름을 원하는 경우, 당신은 parse_url(...)을 시도 할 수 있을까?

+0

이것은 JavaScript 질문입니다. 이것들은 PHP 함수입니다. – mAAdhaTTah

-1

정규식 매칭을 통해 자바 스크립트 replace 사용 :

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

를 교체 (? HTTPS | 파일) 당신의 선택에, 예를 들어, ftp, gopher, telnet 등

+0

실제로이 프로토콜은 3 개의 슬래시를 사용하기 때문에 파일에 대해 작동하지 않습니다. – jitter

+0

@ 지터 : "file"이 포함되지 않아서 실용적인 용도가 없습니다.내 컴퓨터에서 코드를 로컬에서 테스트하는 동안 추가되었습니다. 어쨌든, 정말로 중요하지 않습니다 :) –

관련 문제