0

我有一个脚本,基本上我正在尝试使用 javascript/jquery (with location.pathname) 查找 .php 文件的位置。所以,我的问题基本上是,如果用户输入一些奇怪的东西,比如:

url.com/url.com////url.com////index.php////url.com////index.php.////,然后我需要一种处理此问题的方法,以便我可以获取/index.php,以便我可以选择该文件并从中加载一些内容(使用 ajax),以及选择一个元素,href = "/index.php"以便我可以使其成为活动链接.

还有这样的额外问题:

url.com/projects/index.phpurl.com////projects//index.php为此我想/projects/index.php再次正确选择文件的输出。

有这样做的标准方法吗?我想避免使用一些正则表达式或字符串替换方法,因为我不确定它是否能够处理所有情况,尽管如果解决他的正确方法是这样做,那么我将继续实施它。浏览器使用解析器来确定要加载的文件,所以如果有一个解决方案使用类似的东西(可能是内置的或其他东西),那就太好了。我尝试搜索 jquery url 解析器或清理程序,但实际上我不确定我应该寻找的术语是什么,所以我的搜索结果很短。

编辑:就像一些背景一样,我基本上是在实现这个: http: //css-tricks.com/rethinking-dynamic-page-replacing-content/,但我需要一种方法来调整它,以便它可以在 sub 中找到文件目录也是如此。

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");
});

当我为奇怪的浏览器条目执行此操作时,加载和 href 显然会失败,因为该href属性href = "/index.php"在我的网站中设置为。load即使可以加载页面,该功能也会因奇怪的输入而失败。

4

1 回答 1

0

将多个正斜杠替换为单个正斜杠,然后在必要时删除域名。例子:

$(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 作为回报。

于 2013-10-15T20:34:50.527 回答