2010-10-21 59 views
0

正如我深知PHPDom可以解决我的一半问题,我需要一种方法(不一定是正则表达式)能够找到一个特定的DOM元素在给定的innerHTML上。PHP REGEX:找到一个基于innerHTML的DOM节点

说,例如,我得到这个代码:

<tr> 
    <td class="ranking_rank" style="vertical-align:middle;">48697</td> 
    <td class="ranking_ign" style="vertical-align:middle;">kanineh</td> 
    <td class="ranking_img" style="vertical-align:middle;"> 
    <img src="http://avatar.maplesea.com/Character/NKGEHGDLFNINKPMFLDCNNOHKHKBOHBKLGCBLABFLABHAGBPAEMDEFABJBLKJIHJAANGEKFJGELEPKMCNLKPCINEJDGAJFLKG.gif" onerror="this.src='/images/ranking/noimage.jpg'"/> 
    </td> 
    <td class="ranking_lvl" style="vertical-align:middle;">122</td> 
    <td class="ranking_world" style="vertical-align:middle;"> 
    <img src="/images/ranking/Bootes.gif" onMouseover="ddrivetip('Bootes','white', 70)" onMouseout="hidetip()"> 
    </td> 
    <td class="ranking_job" style="vertical-align:middle;"> 
    <img src="/images/ranking/Warrior.gif" onMouseover="ddrivetip('Warrior','white', 70)" onMouseout="hidetip()"> 
    </td> 
    <td class="ranking_fame" style="vertical-align:middle;">449</td> 
</tr> 
<tr> 
    <td class="ranking_rank" style="vertical-align:middle;">48698</td> 
    <td class="ranking_ign" style="vertical-align:middle;">WannaLogic</td> 
    <td class="ranking_img" style="vertical-align:middle;"> 
    <img src="http://avatar.maplesea.com/Character/DOMELFGEGCGDBFCOLADBDOJLHADCIBNKEGKGINPNBEKPDDKOEEGBLMDLBGBDHGCNPGLAECAMLGKEMDKJGPODIDKCOJCMNNKN.gif" onerror="this.src='/images/ranking/noimage.jpg'"/> 
    </td> 
    <td class="ranking_lvl" style="vertical-align:middle;">122</td> 
    <td class="ranking_world" style="vertical-align:middle;"> 
    <img src="/images/ranking/Aquila.gif" onMouseover="ddrivetip('Aquila','white', 70)" onMouseout="hidetip()"> 
    </td> 
    <td class="ranking_job" style="vertical-align:middle;"> 
    <img src="/images/ranking/Magician.gif" onMouseover="ddrivetip('Magician','white', 70)" onMouseout="hidetip()"> 
    </td> 
    <td class="ranking_fame" style="vertical-align:middle;">56</td> 
</tr> 

我需要能够获得与具有WannaLogic在它的TD全行节点的保持。这样,当我有这个表格行时,我现在可以使用PHP DOM轻松遍历节点。我是一个正则表达式的吸引者,所以如果你能为我提供一些启发,我会非常感激。

+0

如何输出代码?它是通过PHP循环完成还是你手动构建?几乎总是有几种不同的方法来攻击一个问题,并且遍历Dom可能不是最简单的。 – bpeterson76 2010-10-21 03:19:13

回答

0

在DOM树上使用正则表达式是一种禁忌,当面对格式错误的XML/HTML时会失败。试试这个:

$xpath = new DOMXPath($doc); 
$query = "//*[.='WannaLogic']"; 
$entries = $xpath->query($query); 

foreach ($entries as $entry) { 
    // do whatever 
} 
+0

好的非常感谢你......会测试这个nao! – VeeBee 2010-10-21 02:50:28