1

私はしばらくの間、単純なHTML DOMを使用していて、それを使って何ができるかを気に入っています。しかし、やりたいことがあるレンガの壁にぶつかりました。最初に、HTMLがどのように見えるかについての基本的な考え方を説明します

<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>

基本的に、私はTDの太字で何を取得し、その下のこのdivのそれぞれの下に何を配置する必要があります。

たとえば、$ text = $ html-> find('td [class = alt2]')を実行して、「texty texty」を取得することができますが、「texttext」をその後に関連付ける方法は次のとおりです。

texty2 texty2を取得した場合、text2 text 2をそれに関連付けるにはどうすればよいですか?


結局、私が目指していたアウトプットは、<p>texty texty</p><br>text text ある種のものでした。

divは異なるクラスなどを持つ可能性があるため、単純なreg式は機能しないことを指摘しておく必要があります(可能であれば、単純なhtml domを使用します)。

-

アップデート:

私はこの少しのコードを作りました

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++;
}
}

このコードの唯一の問題は、divの総数でカウントされることです。私の例では、これは常に2つあるので問題ありませんが、2つまたは3つある場合は、これが問題になります。だから今、私は最初、2番目、または3番目のトップレベルのdivを取得する方法を理解する必要があります。

4

1 に答える 1

0

Text textText2 text2 ありText2 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 
于 2012-11-07T23:40:59.430 に答える