2013-04-21 44 views
0

我要替換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; 
    } 
} 

但它得到最差。我怎樣才能做到這一點?謝謝。

回答

1

你宣佈你要查找的第一個跨度只有在這裏......

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

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

0

你只循環每個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