Split ile PHP Basit HTML DOM Parser sorunu ()

1 Cevap php

Web siteme tüm Left4Dead Steam başarıları görüntülemek için PHP Simple HTML DOM Parser kullanmak istiyorum. Buhar topluluk web sitesinde başarıları liste şöyle:

<img src="…" /><br />
<div class="achieveImgHolder"><img src="…" /></div>
<div class="achieveTxtHolder">
 <img src="…" />
 <div class="achieveTxt">
  <h3>Stand Tall</h3>
  <h5>Survive a campaign without being incapacitated.</h5>
 </div>
</div>
<br clear="left" />

Aktif başarılar ile inaktif başarıları ayrılır

<br /><br /><br />

Yani benim başarıları görüntülemek için bu kodu yazdı:

<?php
include("simple-html-dom-parser.php");
$achievementPage = file_get_html("http://steamcommunity.com/id/snorpey/stats/L4D?tab=achievements");
$activeInactiveSplit = split("<br /><br /><br />", $achievementPage);
$actives = str_get_html($activeInactiveSplit[0]);
$inactives = str_get_html($activeInactiveSplit[1]);

foreach($actives->find(".achieveTxtHolder") as $achievement)
{
 echo $achievement->find(".achieveTxt h3", 0)->innertext;
}
?>

Ben her zaman aşağıdaki hatayı alıyorum ve gelen hiçbir fikrim yok.

Ölümcül hata: 8. satırda testing.php olmayan bir nesne üzerinde bir üye işlev find () Çağrı

Ben sayfanın başka bir kısmı ile çözümleyici test edilmiş ve düzgün çalıştı. Bu sayfayı bölme ile ilgili sorunlar var gibi görünüyor.

echo $actives // works w/out errors

Ne tam olarak burada yanlış gitti?

1 Cevap

Değiştir ...

$actives->find(".achieveTxtHolder", 0)

için ...

$actives->find(".achieveTxtHolder")

0 döner yerine olayların bir iterable listesinin yalnızca ilk olay belirtilmesi; Eğer kullandığınız beri foreach Eğer olayların hepsini istiyorum. Aksi foreach bir liste değil bir şey üzerinde yineleme için çalışır, ve böylece $achievement değişken aslında NULL, dolayısıyla {[(3) çağırmak çalıştığınızda bir hata alıyorum neden ]} üzerine.