0

HTML のすべてのアンカーを置き換えて、このコードを使用したいのですが、何かが足りないようです:

foreach($html->find('div') as $dict) {
    $dict->find('SPAN', 0)->find('A', 0)->href = "link.php?" . $dict->find('SPAN', 0)->find('A', 0)->innertext;
}

HTML 構造は次のようになります。

<DIV>
    <SPAN> 
        Text text text <A HREF="link1.php">LINK_A</a>, 
        text text <A HREF="link1.php">LINK_B</a>.
    </SPAN>
</DIV>
...

そのコードで私がすべきことは、html のすべてのアンカーを次のように変更することです。

<DIV>
    <SPAN> 
        Text text text <A HREF="link.php?LINK_A">LINK_A</a>, 
        text text <A HREF="link.php?LINK_B">LINK_B</a>.
    </SPAN>
</DIV>
...

ただし、コードは次のように、各スパンの最初のアンカーに対してのみ機能します。

<DIV>
    <SPAN> 
        Text text text <A HREF="link.php?LINK_A">LINK_A</a>, 
        text text <A HREF="link1.php">LINK_B</a>.
    </SPAN>
</DIV>
...

コードを次のように変更しようとしました。

foreach($html->find('div') as $dict) {
    foreach($dict->find('SPAN', 0)->find('A', 0) as $anchor) {
        $anchor->href = "link.php?" . $anchor->innertext;
    }
}

しかし、それは最悪になります。どうやってやるの?ありがとう。

4

2 に答える 2

1

ここだけで最初のスパンを見つけたいと宣言しています...

$dict->find('SPAN', 0)
// The 0 means the first one only I expect
于 2013-04-21T14:02:01.903 に答える
0

見つかった各アンカータグではなく、各 div のみをループしています。あなたの JavaScript コードもかなり非効率に見えます。私はあなたが使用している方法に慣れていませんが、jqueryでは次のようなことができます

$("dic span a").each(function){
    //do something here
    //refer to the anchor tag using $(this)
})
于 2013-04-21T14:02:00.743 に答える