Zacząłem zabawę z xpath i chyba mnie to przerasta.
Oto do czego doszedłem.
Po dobraniu się do pojedynczego diva chce przejść przez listę, div, tabelkę aż do img który mnie interesuje.
class Extractor { var $tmp_c; var $icon; var $source; var $TPL; var $LINK; function Extractor($source, $TPL, $LINK) { $this->source = $source; $this->TPL = $TPL; $this->LINK = $LINK; } function Parse() { $str = $this->get_data($this->source); $dom = new DOMDocument(); @$dom->loadHTML($str); $xpath = new DomXPath($dom); //$tmp = $xpath->query(".//ol[@id='rso']/li[1]/div[1]/div[2]/div[1]/*[1]/*[1]/*[1]/img/@src"); $tmp = $xpath->query(".//LIST[@id='rso']/li[1]/div/div/div[2]/div/table/tbody/tr[1]/td[1]/img/@src"); foreach ($tmp as $element) { $nodes = $element->childNodes; foreach ($nodes as $node) { } } } //var_dump($img, $tmp); //print_r($tmp); } function get_data($url) { $ch = curl_init(); $timeout = 5; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); $data = curl_exec($ch); curl_close($ch); return $data; } } $source = 'source to file'; $extractor->Parse();
Otrzymuję null i nic więc pewnie szczegół tkwi tutaj:
template = './/LIST[@id='rso']/li[1]/div/div/div[2]/div/table/tbody/tr[1]/td[1]/img/@src'; /* Zacznij z bieżązej lokalizacji w dokumencie znajdując LISTĘ o id = rso i przejdz to jej pierwszego elementu, przejdz 2 div w doł a później kolejnym (2) w dół do tabeli jej body az do jej 1'wiersza i 1'kolumny gdzie znajduje się img i wyciągnij src z img taa, tyle w teorii a w praktyce gnój... */
Liczę na jakiś hint z tym bo chyba wrócę znowu do regexp'a

O dziwo ścieżka była brana jako całość od momentu ".//LIST[@id='rso']/li[1]" nie wiem czemu ale zadziało później to już tylko substr i explode.
Do zamknięcia.