Und wie hast Du das gemacht? Auch mit Xpath? Den Inhalt des Mitte-Containers hatte ich mir auch geholt, also title und href und dann sr-online.de davorgepackt. Aber wie kriegst Du denn nun das Ganze ohne utf8-Probleme da heraus....? Also, wenn alles in einem array ist, ist ja gut...
Erst einmal zum Verfahren: Der Zugriff erfolgt immer über die Nodes. Wenn man so einen elegantgen Aufsetzpunkt hat, wie hier bei SR-Online, dann kann man von aus aufwärts und abwärts im Baum navigieren.
nur kurz der erste Ansatz für den Ausschnitt, den ich schon gepostet hatte.
<?php
header('Content-Type: text/html; CharSet="utf-8">');
$_errors = array();
#------------------------------------------------------------------------------
function handleError($errno, $errstr, $errfile, $errline, array $errcontext)
{
global $_errors;
$_errors[] = array('errno' => $errno, 'errstr' => $errstr,
'errfile' => $errfile, 'errline' => $errline); # , 'context' => $errcontext);
}
#------------------------------------------------------------------------------
$url = 'http://www.sr-online.de/sronline/nachrichten/hoerfunknachrichten/hoerfunknachrichten_aktuell100~_seite-2.html';
$page = file_get_contents($url);
$meta = '<?xml encoding="UTF-8" ?'.'>' . "\r\n"; ## Das reicht der DOMDocument-Class jetzt aber!
$dom = new DOMDocument('1.0', 'utf-8');
$dom->encoding = 'utf-8';
$dom->validateOnParse = true;
$dom->strictErrorChecking = true ;
# $dom->strictErrorChecking = false ;
# $dom->substituteEntities = true; ## Darf man nicht machen, wenn das Doc nacher wieder
## komplett im HTML-Kontext ausgegeben werden soll
$dom->preserveWhiteSpace = true;
# $dom->resolveExternals = true;
set_error_handler('handleError', E_WARNING);
$dom->loadHTML($meta . $page);
restore_error_handler();
## hier wird der Hauptcontainer referenziert
$node = $dom->getElementById('mitte_text');
## hier werden die Links _im_ Container in einer dynamischen Liste referenziert
$linklist = $node->getElementsByTagName('a');
## Liste der Links durcharbeiten
if ($linklist->length > 0)
{
foreach ($linklist as $link)
{
## falls Attribute vorhanden sind
if ($link->hasAttributes())
{
foreach($link->attributes as $attribute)
{
if ($attribute->name == 'href') { $attribute->value = 'http://sr-online.de' . $attribute->value; }
}
}
}
}
## Images im Container in einer dynamischen Liste referenzieren
$imglist = $node->getElementsByTagName('img');
if ($imglist->length > 0)
{
foreach ($imglist as $img)
{
if ($img->hasAttributes())
{
foreach($img->attributes as $attribute)
{
if ($attribute->name == 'src') { $attribute->value = 'http://sr-online.de' . $attribute->value; }
}
}
}
}
$text = $dom->saveHTML($node);
?>
<!DOCTYPE HTML>
<html lang="de">
<head>
<title>SR-Online</title>
</head>
<body>
<?php echo $text; ?>
</body>
</html>
Grüße
TS