glupto: Attribut auslesen

Hallo, ich bastele schon länger an einem Problem mit der Ausgabe eines Attributs herum:

<ul>  
<?php  
$data = file_get_contents('http://www.website.de');  
$doc = new DOMDocument();  
$doc->loadHTML($data);  
$result = $doc->getElementsByTagName("h2");  
$zaehler = 1;  
  
  
foreach ($result as $node)  
  
  
if ($zaehler <= 15){  
  
  
         echo '<li><a href="http://www.website.de/" target="_blank">' .  
                   $node->nodeValue . '</a></li>';  
$zaehler++;  
  
}  
?>  
</ul>

Also ich lese die Überschriften einer Seite aus (h2) und gebe den title aus, möchte aber außerdem aus dem h2-Inhalt die href-Adresse auslesen, mir einem Vorspann versehen "http://www.website.de/" und die Gesamt-Adresse ausgeben, statt nur die URL der Hauptseite. Der h2 sieht im Quelletext so aus:
<h2><a href="/unterseite.html" title="ABCDEFGHIJKL" class="storyref" ><span>ABCDEFGHIJKL</span></a></h2>

Wie kommt ich innerhalb meines Codes oben an href ran und wie kann ich das Ergebnis (z.B. array $href) mit dem website-Namen verbinden?
(Als Ergebnis soll der link auf meiner Seite ausgegeben werden "hhtp://www.website.de/Unterseite1.html")

Danke für die Hilfe.
glupto

  1. Liebe(r) glupto,

    $result = $doc->getElementsByTagName("h2");
    ...

    foreach ($result as $node)

    ...

    echo '<li><a href="http://www.website.de/" target="_blank">' .
                       $node->nodeValue . '</a></li>';

    
    > [...]  
    > Wie kommt ich innerhalb meines Codes oben an href ran  
      
    Du kannst also Dokumentknoten (nodes) in PHP erreichen? Eine entsprechende [Debug-Ausgabe](http://php.net/manual/de/function.print-r.php) vor dem Echo könnte Dir da wertvolle Hinweise ausspucken (z.B. was `$node oder $result`{:.language-php} tatsächlich enthalten).  
      
    Wenn Du schon DOM-Methoden benutzt, warum kannst Du dann plötzlich nicht auf Attributknoten von Elementen zugreifen? In Deinem Fall willst Du ja das Kindelement Deiner Node (ein <a>-Element) auf seinen href-Attributwert hin untersuchen...  
      
    
    > und wie kann ich das Ergebnis (z.B. array $href) mit dem website-Namen verbinden?  
      
    Ein solches Array ist in Deinem Codebeispiel nicht enthalten. Was speicherst Du denn darin?  
      
    An Deiner Stelle würde ich es so aufbauen:  
      
    ~~~php
    $href = array(  
        array(  
            'url' => 'example.com/path/to/some/file',  
            'title' => 'Some dull file'  
        ),  
        array(  
            'url' => 'hip.example.com',  
            'title' => 'Some hip site'  
        ),  
        array(  
            'url' => 'google.com',  
            'title' => 'My favorite search engine'  
        )  
    );
    

    Wenn Du lustig bist, dann kannst Du die URL auch als Array-Schlüssel benutzen, denn doppelte URLs sind ja offensichtlich ausgeschlossen:

    $href = array(  
        'example.com/path/to/some/file' => 'Some dull file',  
        'hip.example.com' => 'Some hip site',  
        'google.com' => 'My favorite search engine'  
    );
    

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)