2

我正在处理一段代码,在该代码中,我使用 file_get_contents 通过 php 从另一台服务器获取 html。

然后一些链接需要将原始域放到它上面,以便它们链接到正确的位置,因为我的大多数链接我只是能够替换整行,因为它们是静态的,但是这个是动态的,我需要替换只是其中的一部分。

我是这样做的:

<script>$(document).ready(function(){
  $(".view").each(function(){
        this.href = this.href.replace("/tourney/", "http://binarybeast.com/tourney/");
    })
});</script>

但是,我遇到的问题是,即使在第一个链接中没有像这样创建域,在执行此操作时我也会获得双域:

<a class="view" href="http://localhosthttp://binarybeast.com/tourney/load_match/169049">View Details</a>

原线:

<a class="view" href="/tourney/load_match/169049">View Details</a>
4

4 回答 4

0

这是一种稍微不同的看待它的方式:

$(document).ready(function(){
    $(".view").each(function(){
        var parts = this.href.split('/').slice(3);

        if (parts[0] == 'tourney') {
            this.href = '/' + parts.join('/');
        }
    });
});

http://jsfiddle.net/userdude/aAXYM/

之所以可行,是因为 in 中的 urlthis.href将始终被扩展,因此您可以删除第一部分(域在 中parts[2])、测试并重新组装。如果要添加http://yoursite.com,只需将其添加到第一部分,如'http://yoursite.com/' +或使用:

window.location.protocol + '//' + window.location.hostname + '/' + ... 

如果合适的话。

于 2013-03-26T02:01:08.073 回答
0

href属性返回完整的绝对 url。将替换正则表达式更改为/.*?\/tourney\//,或分配给host属性

this.host = "binarybeast.com";
于 2013-03-26T02:03:38.573 回答
0

用于attr("href")访问属性:

this.href = $(this).attr("href").replace(...)

或者没有 jQuery 的getAttribute功能。

href属性将始终返回绝对路径。这是一个例子:

$("<a href='test'>")[0].href
//"http://stackoverflow.com/questions/15627830/href-replace-giving-me-double-domain-http-localhosthttp-mydomain-com/test"
$("<a href='test'>").attr("href")
//"test"
于 2013-03-26T01:37:35.353 回答
0

尝试这个:

this.setAttribute("href",this.getAttribute("href").replace("/tourney/","http://.../"));

这会在您编写时访问属性,而不是浏览器解析的属性。

于 2013-03-26T01:37:45.853 回答