simplehtmldom php: Nasıl bir şey ya da başka bir arama yapmak

2 Cevap php

Ben php simplehtmldom bazı html kazımak istiyorum. Ben etiketleri containg etiketleri bir demet var. Ben bgcolor = # ffffff ve bgcolor = # cccccc'ait arasında alternatif istiyorum etiketleri. Diğer bgcolors bazı etiketler vardır.

Ben de bgcolor = # ffffff veya bgcolor = # cccccc olan her etiketiyle tüm kodu almak istiyorum. Ben bulmak istemiyorum diğer etiketleri olarak orada ben sadece $ html-> find ('tr') kullanamazsınız.

Herhangi bir yardım mutluluk duyacağız.

2 Cevap

Bir SimpleXML sınıfa DOM yüklemek ve ardından XPath'i kullanabilirsiniz, gibi pek olabilir:

$xml = simplexml_import_dom($simple_html_dom);

$goodies = $xml -> xpath('//[@bgcolor = "#ffffff"] | //[@bgcolor = "#cccccc"]');

hatta parantez aynı set içinde olduğu VEYA sözdizimi koymak mümkün olabilir, ama ben çift kontrol etmek gerekir.


Güncelleme:

Üzgünüm, DOM uzantısı bahsediyoruz sanıyordum. Ben sadece simpledomhtml yukarı baktı, ve onun özellik bulabilirsiniz gevşek XPath'ın dayalı olduğu görülmektedir. neden sadece yapamaz:

$ Güzellikler = $ html -> ('[bgcolor = # ffffff], [bgcolor = "# cccccc]') bulmak;

çok simplehtmldom kullanabilirsiniz

Bu sorun için benim çözüm

<?php

include_once "simple_html_dom.php";

// the html code example
$html = '<table>
    <tr bgcolor="#ffffff"><td>1</td></tr>
    <tr bgcolor="#cccccc"><td>2</td></tr>
    <tr bgcolor="#ffffff"><td>3</td></tr>
    </table>';

// in this case I load the html code via string
$code = str_get_html($html);

// find elem by attribute
$trs = $code -> find('tr[bgcolor=#ffffff]');
foreach($trs as $tr){
    echo $tr -> innertext;
}
$trs = $code -> find('tr[bgcolor=#cccccc]');
foreach($trs as $tr){
    echo $tr -> innertext;
}

?>