Attribut auslesen
glupto
- php
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
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.