如何通过JQuery从没有扩展名的URL获取页面名称

时间:2013-04-29 19:11:35

标签: jquery filenames

我有一个网址: -

http://www.example.com/keyword/category.php

http://www.example.com/keyword/category.php#4

我需要一个神奇的abracadabra,它只能从此网址中将页面名称设为类别

这是我尝试过的,它提供了 category.php 。但它有两个问题。这是丑陋和漫长的,它给我带有扩展名的文件名。

var currurl = window.location.pathname;
var index = currurl.lastIndexOf("/") + 1;
var filename = currurl.substr(index);

感谢。

4 个答案:

答案 0 :(得分:9)

将其转换为如下函数:

function getPageName(url) {
    var index = url.lastIndexOf("/") + 1;
    var filenameWithExtension = url.substr(index);
    var filename = filenameWithExtension.split(".")[0]; // <-- added this line
    return filename;                                    // <-- added this line
}

然后当你需要使用它时:

var url = "http://www.example.com/keyword/category.php";
var myFilename = getPageName(url);

所有的“丑陋”都隐藏在一个函数中,主代码看起来很干净!

答案 1 :(得分:2)

function getPageName() {
    var index = window.location.href.lastIndexOf("/") + 1,
        filenameWithExtension = window.location.href.substr(index),
        filename = filenameWithExtension.split(".")[0];  

    return filename;                                     
}

答案 2 :(得分:1)

使用像http://www.example.com/keyword/category.php?parametro=teste

这样的查询字符串
function getPageName(url) {
     var index = url.lastIndexOf("/") + 1;
     var filenameWithExtension = url.substr(index);
     var filename = filenameWithExtension.split(".")[0]; 

     filename = filename.split("?")[0]; // <-- added this line

     return filename;                                  


}

答案 3 :(得分:0)

注意:如果您执行.split('.'),您将错过许多网址的基本名称。

您可以找到最后一个正斜杠,并提前搜索第一个.?&#以捕获不同的网址。这可能相当于PHP的basename

function getBaseName(url) {
  if(!url || (url && url.length === 0)) {
    return "";
  }
  var index = url.lastIndexOf("/") + 1;
  var filenameWithExtension = url.substr(index);
  var basename = filenameWithExtension.split(/[.?&#]+/)[0];

  // Handle '/mypage/' type paths
  if(basename.length === 0) {
    url = url.substr(0,index-1);
    basename = getBaseName(url);
  }
  return basename ? basename : ""; 
}

并像这样使用

var url = "http://www.example.com/keyword/category.php#4";
var file = getBaseName(url);

<强>结果:

http://www.example.com/keyword/category.php#4    =>  "category"
http://www.example.com/keyword/category          =>  "category"  
http://www.example.com/keyword/category/         =>  "category"  
http://www.example.com/keyword/category?ver=1    =>  "category"  
http://www.example.com/keyword/category/?ver=1   =>  "category"
http://www.example.com/keyword/category#elem     =>  "category"

JSBin demo