解析HTML和变化锚仅适用于每个跨度

解析HTML和变化锚仅适用于每个跨度

问题描述:

我要替换HTML每一个锚,并具有使用该代码的第一锚但似乎缺少点什么:解析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; 
    } 
} 

但它得到最差。我怎样才能做到这一点?谢谢。

你宣布你要查找的第一个跨度只有在这里......

$dict->find('SPAN', 0) 
// The 0 means the first one only I expect 
+0

谢谢!有用! :) – 2013-04-21 14:08:54

你只循环每个div,而不是你找到的每个锚标签。你的JavaScript代码看起来效率也很低。我不熟悉你使用的方法,但在jQuery中,你可以做这样的事情

$("dic span a").each(function){ 
    //do something here 
    //refer to the anchor tag using $(this) 
}) 
+1

我认为这是php – 2013-04-21 14:02:46

+0

@罗伯特:嘿谢谢,但比利是真的,它是PHP。 :) – 2013-04-22 00:51:49