パス情報の取得
あるパスをもとにドメイン名やディレクトリ名などの各情報を取得するオブジェクト(メソッド群)です。
取得できる内容はメソッド一覧をご覧ください。
メソッド一覧
デモ
オブジェクトの定義
JavaScript
var pathinfo = {
/**
* プロトコル
* @param {string} path 取得(解析)元のURLまたはパス
* @return {string} プロトコルを返す
*/
protocol : function(path) {
var result = path.replace(/\\/g, '/').match(/^([^/]+):/, '');
return result ? result[1] : '';
},
/**
* ドメイン名
* @param {string} path 取得(解析)元のURLまたはパス
* @return {string} ドメイン名を返す
*/
domain : function(path) {
var result = path.replace(/\\/g, '/').match(/\/\/([^/]*)/);
return result ? result[1] : '';
},
/**
* トップレベルドメイン名
* @param {string} path 取得(解析)元のURLまたはパス
* @return {string} トップレベルドメイン名を返す
*/
topLevelDomain : function(path) {
var result = this.domain(path).match(/\.([^.]+)$/);
return result ? result[1] : '';
},
/**
* 直前のディレクトリ名まで
* @param {string} path 取得(解析)元のURLまたはパス
* @return {string} 直前のディレクトリ名までを返す
*/
dirname : function(path) {
var result = path.replace(/\\/g, '/').replace(/\/[^/]*$/, '');
return result.match(/^[^/]*\.[^/\.]*$/) ? '' : result;
},
/**
* ルート相対パス
* @param {string} path 取得(解析)元のURLまたはパス
* @return {string} ルート相対パスを返す
*/
rootRelative : function(path) {
return path.replace(/\\/g, '/').replace(/^[^/]*\/\/[^/]*/, '');
},
/**
* ファイル名以降すべて
* @param {string} path 取得(解析)元のURLまたはパス
* @return {string} ファイル名以降すべてを返す
*/
fullBasename : function(path) {
return path ? path.split('/').pop() : '';
},
/**
* 拡張子を含めたファイル名
* @param {string} path 取得(解析)元のURLまたはパス
* @return {string} 拡張子を含めたファイル名を返す
*/
basename : function(path) {
return this.fullBasename(path).replace(/[\?#].*$/g, '');
},
/**
* 拡張子を除いたファイル名
* @param {string} path 取得(解析)元のURLまたはパス
* @return {string} 拡張子を除いたファイル名を返す
*/
filename : function(path) {
return this.basename(path).replace(/\.[^.]+$/, '');
},
/**
* 拡張子
* @param {string} path 取得(解析)元のURLまたはパス
* @return {string} 拡張子を返す
*/
extension : function(path) {
var result = this.basename(path).match(/\.([^.]+)$/);
return result ? result[1] : '';
},
/**
* URLパラメーター(クエリ文字列)
* @param {string} path 取得(解析)元のURLまたはパス
* @return {string} URLパラメーター(クエリ文字列)を1つの文字列で返す
*/
param : function(path) {
var result = path.match(/\?([^?]*)$/);
return result ? result[1] : '';
},
/**
* URLパラメーター(クエリ文字列)
* @param {string} path 取得(解析)元のURLまたはパス
* @return {object} URLパラメーター(クエリ文字列)をハッシュ(連装配列)で返す
*/
params : function(path) {
var param = this.param(path);
if (param === '') return {};
var tmpParams = param.split('&'),
keyValue = [],
params = {};
for (var i = 0, len = tmpParams.length; i < len; i++) {
keyValue = tmpParams[i].split('=');
params[keyValue[0]] = keyValue[1];
}
return params;
},
/**
* ハッシュフラグメント
* @param {string} path 取得(解析)元のURLまたはパス
* @return {string} ハッシュフラグメントを返す
*/
hash : function(path) {
if (!path) return '';
var paths = path.split('/'),
matchs = paths.pop().match(/#([^#]+)$/);
return matchs && matchs[1] ? matchs[1] : '';
}
};
使い方
メソッドの第一引数に取得する情報のもととなるURLの文字列を指定します。
戻り値 = pathinfo.メソッド名(URL文字列);
JavaScript
var basename = pathinfo.basename('http://www.example.co.jp/test/page/sample-01_test.html?data=test01&w1=d01#hash-sample');
alert(basename);
メソッド
次のメソッドが利用可能です。
メソッド | 説明 | 戻り値 |
---|---|---|
pathinfo.protocol( path ) | プロトコル | 文字列 |
pathinfo.domain( path ) | ドメイン名 | 文字列 |
pathinfo.topLevelDomain( path ) | トップレベルドメイン名 | 文字列 |
pathinfo.dirname( path ) | 直前のディレクトリ名まで | 文字列 |
pathinfo.rootRelative( path ) | ルート相対 | 文字列 |
pathinfo.fullBasename( path ) | ファイル名以降すべて | 文字列 |
pathinfo.basename( path ) | 拡張子を含めたファイル名 | 文字列 |
pathinfo.filename( path ) | 拡張子を除いたファイル名 | 文字列 |
pathinfo.extension( path ) | 拡張子 | 文字列 |
pathinfo.param( path ) | パラメータ | 文字列 |
pathinfo.params( path ) | パラメータ | 連想配列 |
pathinfo.hash( path ) | ハッシュ | 文字列 |