0

我想替换 H​​TML 上的每个锚点并使用此代码,但似乎缺少一些东西:

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 回答