PHP html veri ayıklamak için DOMDocument kullanma

1 Cevap

Ben aşağıdaki yapıda bir tablo var. İstediğim verileri almak için görünmüyor olabilir.

<table class="gsborder" cellspacing="0" cellpadding="2" rules="cols" border="1" id="d00">
	<tr class="gridItem">
		<td>Code</td><td>0adf</td>
	</tr><tr class="AltItem">
		<td>CompanyName</td><td>Some Company</td>
	</tr><tr class="Item">
		<td>Owner</td><td>Jim Jim</td>
	</tr><tr class="AltItem">
		<td>DivisionName</td><td>&nbsp;</td>
	</tr><tr class="Item">
		<td>AddressLine1</td><td>9314 W. SPRING ST.</td>
	</tr>
</table>

Bu tablo elbette sayfa içinde başka bir tablo içinde yuvalanmış. Nasıl bir anahtar değer çifti olarak "Kod" ve "0adf" bakınız örneğin DomDocument kullanabilirim? Aslında bir anahtar değeri çifti olması gerekmez ama ben bunları ayrı ayrı her aramak gerekir.

EDIT:

PHP Basit HTML kullanarak, ben bu kullanarak gerekli veri ayıklamak mümkün:

  $foo = $html->getElementById("d00")->childNodes(1)->childNodes(1);

Bu olsa ile sorun benim verilerle iki <td></td> etiketleri alıyorum olmasıdır. Sadece etiketleri olmadan ham verileri kapmak için bir yolu var mı?

Ayrıca, bu tablonun dışında benim veri almak için doğru yolu nedir?

1 Cevap

Eğer DOMDocument kullanarak ölü kümesi değilseniz, PHP Simple HTML DOM Parser kullanmayı deneyin. Bu, geçerli bir XML değil HTML olarak çözümlenen belgeye güzel bir arayüz sağlayan ayrıştırmak için izin yararı vardır.

Gibi bir şey yazabilirsiniz:

$html = str_get_html(...);
foreach($html->find('tr') as $tr) 
{
  print 'First td: ' . $tr->find('td', 0)->plaintext;
  print 'Second td: ' . $tr->find('td', 1)->plaintext;
}