私はしばらくの間、単純な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を取得する方法を理解する必要があります。