PHPのpathinfo関数が便利だというブログを書いていたら、JavaScriptで使う時も同じものが欲しくなり、
とりあえず、サクッと作っておきました。
スニペットなので、コピペしてお使いください。
ソース
URL情報取得
urlinfo=function(uri){
if(!uri){uri = location.href}
var data={};
//URLとクエリ分離分解;
var query=[];
if(uri.indexOf("?")!=-1){query = uri.split("?")}
else if(uri.indexOf(";")!=-1){query = uri.split(";")}
else{
query[0] = uri;
query[1] = '';
}
//基本情報取得;
var sp = query[0].split("/");
var data={
url:query[0],
dir:this.pathinfo(uri).dirname,
domain:sp[2],
protocol:sp[0].replace(":",""),
query:(query[1])?(function(q){
var data=[];
var sp = q.split("&");
for(var i=0;i<sp .length;i++){
var kv = sp[i].split("=");
if(!kv[0]){continue}
data[kv[0]]=kv[1];
}
return data;
})(query[1]):[],
};
return data;
};
## 使い方
urlinfo("http://wordpress.ideacompo.com/hoge/hoge/index.php?q=123");
console.log(urlProperty.url);
console.log(urlProperty.dir);
console.log(urlProperty.domain);
console.log(urlProperty.protocol);
console.log(urlProperty.query.q);
## 結果
http://wordpress.ideacompo.com/hoge/hoge/index.php
http://wordpress.ideacompo.com/hoge/hoge/
wordpress.ideacompo.com
80
123
path情報取得
pathinfo = function(p){
var basename="",
dirname=[],
filename=[],
ext="";
var p2 = p.split("?");
var urls = p2[0].split("/");
for(var i=0; i<urls.length-1; i++){
dirname.push(urls[i]);
}
basename = urls[urls.length-1];
var basenames = basename.split(".");
for(var i=0;i<basenames.length-1;i++){
filename.push(basenames[i]);
}
ext = basenames[basenames.length-1];
return {
"hostname":urls[2],
"basename":basename,
"dirname":dirname.join("/"),
"filename":filename.join("."),
"extension":ext,
"query":(p2[1])?p2[1]:"",
"path":p2[0]
};
};
## 使い方
pathinfo("/system/log/info.dat");
console.log(urlProperty.dirname);
console.log(urlProperty.basename);
console.log(urlProperty.filename);
console.log(urlProperty.extension);
## 結果
/system/log
info.dat
info
dat
Ajax操作をする場合や、サーバーの同一階層の特定のファイルを取得する場合など、パス情報を取得したい場面は結構あるはずなので、便利に使ってくだされ。
0 件のコメント:
コメントを投稿