我想替换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;
}
}
但它变得最糟糕。我怎样才能做到这一点?感谢。
答案 0 :(得分:1)
你宣称你只想在这里找到第一个跨度......
$dict->find('SPAN', 0)
// The 0 means the first one only I expect
答案 1 :(得分:0)
您只是循环遍历每个div,而不是您找到的每个锚标记。您的JavaScript代码看起来效率也很低。我不熟悉您正在使用的方法,但在jquery中,您可以执行类似
的操作$("dic span a").each(function){
//do something here
//refer to the anchor tag using $(this)
})