我有一个脚本,本质上我试图使用javascript/jquery查找.php文件的位置(使用location.pathname)。所以,我的问题基本上是,如果用户输入一些奇怪的东西,比如:
url.com/或url.com////或url.com////index.php////或url.com////index.php.////,然后我需要一种处理这个问题的方法,这样我就可以获得/index.php,这样我就可以选择该文件并从其中加载一些内容(使用ajax),以及选择一个具有href = "/index.php"的元素,这样我就可以使它成为一个活动链接。
还有一个额外的问题是这样的:
url.com/projects/index.php,url.com////projects//index.php,我希望有一个/projects/index.php的输出,以便再次正确地选择文件。
有什么标准的方法吗?我想避免使用某种regex或string替换方法,因为我不确定它是否能够处理所有的情况,尽管如果正确的方法是使用regex或string替换方法,那么我将继续并实现它。浏览器使用解析器来确定要加载的文件,所以如果有类似的解决方案(可能是内置的),那就太好了。我试着搜索jquery解析器或清理器,但实际上我不确定我应该搜索的词是什么,所以我的搜索出现了不足。
编辑:作为一些背景,我基本上实现了:http://css-tricks.com/rethinking-dynamic-page-replacing-content/,但是我需要一种方法来调整它,这样它也可以在子目录中找到文件。
EDIT2:,这里是我的意思的一个例子:

EDIT3:,这里是我使用的ajax调用,它在popstate上触发:
var file = location.pathname;
$("#content").load(file + " #content", function() {
$("#menu ul a").removeClass("current");
$("#menu ul a[href="+file+"]").addClass("current");
});当我对奇怪的浏览器条目执行此操作时,load和href显然会失败,因为在我的网站中,href属性设置为href = "/index.php"。load函数对于奇怪的输入也会失败,即使可以加载页面。
发布于 2013-10-15 20:34:50
用一个正斜杠替换多个正斜杠,必要时删除域名。示例:
$(document).ready(function() {
var userStr = 'url.com////projects//index.php';
userStr = userStr.replace(/\/{2,}/g, '/').replace(/url.com/, '');
// userStr = /projects/index.php
});这显然不能适用于用户可能提供的每个URL组合,但我怀疑您是否会找到一个正则表达式来处理所有的可能性。如果用户向您发送“url.com/index.php./”,则给他们404作为回报。
https://stackoverflow.com/questions/19388634
复制相似问题