Avatar billede syncroniq Nybegynder
23. maj 2012 - 19:51 Der er 1 kommentar

PHP, DOMXPath og hente sideelementer

Hey,

Jeg skal hente nogle informationer fra noget html. Det er til noget test, så skal ikke bruges som sådan.

Jeg får hentet HTML kildekoden ind i en varabel og gør så følgende :


$dom->loadHTML($html);
$xpath = new DOMXPath($dom);

$tags = $xpath->query('//div[@class="Rabat"]/*');

foreach ($tags as $tag) {
    print("\n".trim($tag->nodeValue));
    print('');
}


Problemet er at siden indeholder img tags med src som jeg også gerne vil have ud i samme omgang. Og så vil jeg gerne have fat i hvert element for sig, istedet for bare at kyle dem alle ud fra en variabel. Hvert element har sin egen entydige class.

Er det muligt at hive dem ud pr class?

Altså have en løkke der tager dem alle linie pr line, og så går videre til den næste klump.

Lidt ala det her :

foreach($authors as $author)
{
        $a          = $author->nodeValue; // shortcut
        $last_name  = substr($a, strrpos($a, ' ')+1);
        $first_name = substr($a, 0, strrpos($a, ' '));
        $author->nodeValue = "{$last_name}, {$first_name}";
}

Fundet på : http://www.phpfreaks.com/tutorial/handling-xml-data
ca midt på siden. Jeg skal bare have fat i nogle classes istedet.
Avatar billede Broxigar Praktikant
24. maj 2012 - 16:21 #1
Hvis du bruger http://simplehtmldom.sourceforge.net/ så kan du formentlig nemmere hive dine objekter ud.


require_once 'simple_html_dom.php';
$html = file_get_html($url);

$div_array = array();
$img_array = array();

foreach($html->find('div[id=foo]') as $div){
  $div_array[] = $div->save();
}

foreach($html->find('img') as $img){
  $img_array[] = $img->src;
}

Prøv og kigge på documentationen, det kan være at du finder noget der giver bedre mening: http://simplehtmldom.sourceforge.net/manual.htm
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester