_
toggle menu eXmatrikulationsamt.de
online: 363 gäste

>PHP DomXPath die freaks sind gefragt

Themen Layout: Standard · Linear · [Outline] Thema abonnieren | Thema versenden | Thema drucken
post 02 Sep 2010, 16:41
avatar
fuk da hataz
*********

Punkte: 15000
seit: 27.05.2003

gegeben ist folgende datei "test.html"

CODE
<html>
<body>

<div id='a'>
    AAA1 <img src="bild1.jpg">
</div>

<div id='a'>
    <div id='b'>
         BBB1 <img src="bild2.jpg">
    </div>
    AAA2 <img src="bild3.jpg">
</div>

<div id='a'>
    AAA3
</div>

</body>
</html>


ich will NUR die inhalte aus den divs mit der id=a herausfiltern, inklusive der dazugehörigen bilder. ich habe dafür eine php-datei, die folgendermaßen aussieht:

CODE
<?php
$dom = new DOMDocument();
$dom->loadHTMLFile('test.html');

$xpath = new DOMXPath($dom);

$ergebnisse = $xpath->query("//div[@id='a']");

foreach ($ergebnisse as $ergebnis) {
    echo $ergebnis->nodeValue ."<br>";
    }
?>



das ergebnis soll so aussehen:

AAA1 bild1.jpg
AAA2 bild3.jpg
AAA3


sieht aber so aus:

AAA1
BBB1
AAA2
AAA3




basic problem:

ich bekomme als resultat AUCH die text-inhalte der b-divs, will aber NUR die der a-divs ohne kinder!

advanced problem:

die bilder werden nicht mit ausgegeben. das ginge mit
CODE
echo '<img src="'.$ergebnis->getAttribute('src').'" border="0">';

einzeln, soll aber zusammen passieren. ich will ja die texte der a-divs und dahinter sofort das entsprechende bild.


hat da jemand vielleicht einen guten tip?


--------------------
onkelroman war hier
ProfilPM
AntwortenZitierenTOP
 
Antworten
post 01 Nov 2010, 14:03
avatar
fuk da hataz
*********

Punkte: 15000
seit: 27.05.2003

ich verzweifel hier grad. schaut euch das an, ich hab folgenden code:

CODE
<?php

$dom = new DOMDocument();           // DOM-Dokument erstellen
@$dom->loadHTMLFile('http://www.exmatrikulationsamt.de/index.php?showtopic=3726&st=15');
$xpath = new DOMXPath($dom);

foreach($xpath->query("//div[@class='postcolor']") as $node)
{
$inhalt = $dom->saveXml($node);
echo $inhalt.'<br /><br />===========<br /><br />';
}

?>


der untersucht folgende seite: [klick]
und soll da jetzt NUR die posts rausfiltern (div class="postcolor").

aber was passiert? sobald ein post ein zitat enthält, zählt es zuerst den post mit zitat und dann nochmal das zitat einzeln!!! HIER klicken, um das resultat zu sehen.

wer weiß rat? ich eskalier gleich..
ProfilPM
AntwortenZitierenTOP
post 01 Nov 2010, 14:11
avatar
Are you afraid?
********

Punkte: 1648
seit: 11.10.2007

Zitat(onkelroman @ 01 Nov 2010, 13:03)
ich eskalier gleich..
*


Zum Vergrößern klicken:
Zum Vergrößern klicken
Link zum Bild in voller Größe


--------------------
In my talons, I shape clay, crafting life forms as I please.
Around me is a burgeoning empire of steel.
From my throne room, lines of power careen into the skies of Earth.
My whims will become lightning bolts that devastate the mounds of humanity.
Out of the chaos, they will run and whimper, praying for me to end their tedious anarchy.
I am drunk with this vision. God: the title suits me well.
ProfilPM
AntwortenZitierenTOP
Beiträge
onkelroman   PHP DomXPath   02 Sep 2010, 16:41
onkelroman   ja, man kann mit hasChildNodes() abfragen, ob nach...   02 Sep 2010, 17:03
Stormi   Ginge auch //div[@id='a']/node()[not(@id=...   02 Sep 2010, 19:12
I.I   ja das geht auch ....   02 Sep 2010, 23:19
onkelroman   ich verzweifel hier grad. schaut euch das an, ich ...   01 Nov 2010, 14:03
onkelroman   ach.. ich hab den fehler. posts stehen innerhalb e...   01 Nov 2010, 14:16
1 Nutzer liest/lesen dieses Thema (1 Gäste)
0 Mitglieder: