2011-08-09 19 views
1

私は例えば
、ジャバスクリプトでURLパスを取得したい、私はこれらのURLを持っている:
javascript、どのようにURLのパスを取得するには?

http://localhost:8080/blah/blah/index.php?p=1 

http://localhost:8080/blah/blah/index.php 

http://localhost:8080/blah/blah/ 

http://localhost:8080/blah/blah 

を、私は取得したいと思います:私を助けてください

+0

可能重複(http://stackoverflow.com/questions/736513/how-do-i-parse -a-url-into-hostname-and-path-in-javascript) –

答えて

3

http://localhost:8080/blah/blah/ 誰でもこれがあるように思われますURLの最後から削除したいものが具体的に定義されていないため、決定的な解決策がない曖昧な問題です。

クエリパラメータを削除するのは簡単です(最初の例)。

末尾のスラッシュ(最後の2つの例)を正規化するのは簡単です。

パスの最後の部分を削除しても問題ありませんが、それはURLの最後に/index.php/blahを区別できるルールをいくつか追加しない限り簡単ですアルゴリズムは、いつ削除するかを知っていますが、他のものを削除することはできません。問題を定義したので、 http://localhost:8080/blah/blahの末尾のblahが削除されるべきかどうかをコードは知ることができません。

たとえば、このコードではクエリパラメータとURLの最後の部分が削除されますが、これは4つの例のうちの3つでのみ機能しますが、末尾に削除したい項目が不明確になります。

function cleanURL(url) { 
    return(url.replace(/\?.*$/, "").replace(/\/[^\/]*$/, "") + "/"); 
} 

ここでは、4つの例すべてで実行されています。http://jsfiddle.net/jfriend00/2Q4Ue/。それは4例のために、これらの結果を返します。最後のURLについては

http://localhost:8080/blah/blah/ 
http://localhost:8080/blah/blah/ 
http://localhost:8080/blah/blah/ 
http://localhost:8080/blah/ 

を、あなたはそれはの一部だかどうかを知る方法がないので、アルゴリズムは、ファイル名として最後に/blahを識別し、それを取り除くことがわかりますパスまたはファイル名。

ファイル名にファイル拡張子が必要で、ファイル名が存在しないときにパス名の最後の部分に拡張子が付かないという新しい規則を作成する場合は、そのようなアルゴリズムを使用して、場合。

OK、最後にファイル名がそれにピリオドを使って何があるという新しいルールで、その後、あなたはこれを使用することができます:http://jsfiddle.net/jfriend00/LpauM/をし、この結果を生成します。このフィドルに示されている

function cleanURL(url) { 
    return(url.replace(/\?.*$/, "") 
      .replace(/\/[^\/]*\.[^\/]*$/, "") 
      .replace(/\/$/, "") + "/"); 
} 

[?どうすればJavaScriptでホスト名とパスにURLを解析しない]:4つのテストのURLのための

http://localhost:8080/blah/blah/ 
http://localhost:8080/blah/blah/ 
http://localhost:8080/blah/blah/ 
http://localhost:8080/blah/blah/ 
+0

実際のコード例とjsFiddleを追加しましたそれは行動している。 – jfriend00

+0

が儀式であると、URLの末尾に "ドット"というファイル名であることがわかります。とにかく、jfriendに感謝します.URLは非常に役に立ちます。 –

+0

ファイル名の検出に新しいバージョンのコードが追加されました。 – jfriend00

関連する問題