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

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 に答える
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/

の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を返します。replace-regexをに変更するか、プロパティ/.*?\/tourney\//に割り当てます。host

this.host = "binarybeast.com";
于 2013-03-26T02:03:38.573 に答える