PHP Düzenli İfade: html tablolar için bir desen oluşturmak için nasıl

4 Cevap php

Ben son PHP kullanıyorum. Ben verileri almak için HTML sayfası ayrıştırmak istiyorum.

HTML:

<table class="margin15" style="margin-left: 0pt; margin-right: 0pt;" width="100%" align="left" border="0" cellpadding="0" cellspacing="0">
TRs, TDs, Data
</table>

<table class="margin15" style="margin-left: 0pt; margin-right: 0pt;" width="100%" align="left" border="0" cellpadding="0" cellspacing="0">
TRs, TDs, Data
</table>

<table class="margin15" style="margin-left: 0pt; margin-right: 0pt;" width="100%" align="left" border="0" cellpadding="0" cellspacing="0">
TRs, TDs, Data
</table>

<table class="margin15" style="margin-left: 0pt; margin-right: 0pt;" width="100%" align="left" border="0" cellpadding="0" cellspacing="0">
TRs, TDs, Data
</table>

PHP-Kodu:

<?php

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.test.com/mypage.html');  
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);


$pattern = '/<table class="margin15" style="margin-left: 0pt; margin-right: 0pt;" width="100%" align="left" border="1" cellpadding="0" cellspacing="0">[^~]</table>/';
preg_match_all($pattern, $result, $matches);
print_r($matches);

?>

Ben tüm tabloları almak mümkün değilim. Ben basit kullandığınızda $pattern='/table/';, bana kesin sonuç verir. Bir dizi yerde tüm tabloyu almak için bir model oluşturmak nasıl?

4 Cevap

Regex kullanarak HTML ayrıştırma HTML düzenli değil en iyi olarak bir ağrı, ben kullanmak öneririm Simple HTML DOM.

You can't parse [X]HTML with regex, ama deneyebilirsiniz:

$pattern = '#<table(?:.*?)>(.*?)</table>#';

Iç içe geçmiş tablolar varsa bu işe yaramaz.

this answer bir göz atınız. Bu yapmak istediğiniz ne olduğu, PHP bir HTML çözümleyici kullanımını açıklar.

Ya da sadece DOM sınıf php teklifler kullanın. Ben çok daha hızlı, basit html dom olarak aynı ama yapabileceğini düşünüyorum ('Beni yanlış anlamayın, gerçekten basit HTML, DOM gibi, ama birkaç düzine hatları ile dosyalar için yavaş)