2012-11-07 76 views
1

我一直在使用简单的HTML DOM,并一直热爱我可以用它做什么。然而,我已经碰到了一堵我想要做的事。先说说什么样的HTML看起来像PHP简单的HTML DOM - 遍历页面

<html> 
<div><div><table><tr><td class="alt2"> texty texty </td></tr></table></div></div> 
Text text 
<div><div><table><tr><td class="alt2"> texty2 texty2 </td></tr></table></div></div> 
Text2 text2 
<div><div><table><tr><td class="alt2"> texty3 texty3 </td></tr></table></div></div> 
Text2 text3 
</html> 

一个基本的想法所以basicly我需要什么,在TD的大胆的是,然后将所碰触下,每个该div。

所以我知道我可以做$ text = $ html-> find('td [class = alt2]')例如获取“texty texty”,但如何将“text text”与那之后,

如果我抓住texty2 texty2,我该如何将text2文本2与那个关联?


到底

,我的目标是为产量<p>texty texty</p><br>text text之类的话

我要指出的是,申报单可以有不同的充类和这样的,就这么简单reg表达式中难道不工作(和希望坚持使用简单的HTML DOM如果可能的话)

-

UPDATE:

我做的这一点点代码

if ($html) { 


// Pulls the div that holds the links to the champion profiles (where they have the english names) 
$text = $html->find('td[class="alt2"]'); 
$count = 0; 
foreach ($text as $holder) { 

    $tdholder[] = $holder->innertext; 
    $html->find('div',$count*2)->innertext = $holder->innertext; 
    echo $holder."<br><br>"; 
    $count++; 
} 
} 

这个代码的唯一问题是它是由divs的总数计算。这在我的例子中是可以的,因为总是有2个,但如果有2或3个,这就成了一个问题。所以现在我只需要弄清楚如何抓住第一个,第二个或第三个顶级div,我应该很好。

+0

一个的同时等待溶液即时通讯思想,是厕所ping通过一次抓取每个TD的内容,然后再次循环,然后改变,然后简单地告诉用第一个td的内容替换第一个顶级div ...现在处理它 – user1807658

+0

“文本文本” ,'Text2 text2'和'Text2 text3'不在任何html标签中,这使得您的请求模糊不清 – Baba

+0

@Baba这就是问题所在。如果他们在标签中,我可以通过数组匹配它们。 – user1807658

回答

0

Text textText2 text2Text2 text3是不是在所有的HTML标签,这使得你的要求不明确的

下面的解决方案将工作but it is code specific它只会为HTML例如工作上面添加你的原始HTML以便更好地执行

$list = array(); 
foreach ($html->find('text') as $td) { 
    $list[] = $td->plaintext; 
} 

echo "<pre>"; 
foreach (array_chunk(array_filter(array_map("trim", $list)), 2) as $info) { 
    vprintf("TD: %s,\tTXT: %s \n", $info); 
} 

输出

TD: texty texty, TXT: Text text 
TD: texty2 texty2, TXT: Text2 text2 
TD: texty3 texty3, TXT: Text2 text3 
+0

我编程的东西,将工作,唯一的问题是它每桌只有2个div。我需要找到一种方法,抢到第一顶层格,然后将“第二”顶层的div(而不是网页上的第二个div,这就是为什么我的代码做(或没有) '如果($ HTML) { \t //翻出保存的链接冠军型材(他们有英文名字)的股利 $文字= $ HTML的“发现( 'TD [CLASS = ”ALT2“]'); $ 计数= 0; 的foreach($文本作为$保持器){ \t \t $ tdholder [] = $户主>的innerText; \t $ HTML->找到( 'DIV',$数* 2) - >的innerText = $ holder-> innertext; \t echo $ holder。“

“; \t $ count ++; } }' – user1807658

+0

我的工作在这里瞎我的第一个标签是'html'其次是'div' ....没有太多我可以跟你提供 – Baba

+0

我给的信息是所有实乃信息做。文字等都是动态的。但是布局将始终是带有alt2类的TD,在2个或更多div内,随后是其下的文本(即没有标签内),我在那里编写的代码(也更新到我的第一篇文章)解决了问题。但是,它只能解决它,如果总是会有2个div。但是,如果我只能弄清楚如何获得仅包含顶级div的数组,那么这可以得到解决。 – user1807658