Hi glupto,
ich war Dir noch meine Version schuldig geblieben. Gestern habe ich es nicht mehr geschafft, musste draußen noch 'was erledigen. Die Sonne schien...
Hier jedenfalls erst einmal ein funtkionierendes Gestrüpp:
<?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);
}
#==============================================================================
function get_links($node = NULL)
{
if ($node === NULL) return false;
$_links = array();
$__linklist = $node->getElementsByTagName('a');
## Liste der Links durcharbeiten
if ($__linklist->length > 0)
{
foreach ($__linklist as $key => $__link)
{
## falls Attribute vorhanden sind
if ($__link->hasAttribute('href'))
{
$_links[$key]['href'] = $__link->getAttribute('href');
$_links[$key]['linktext'] = $__link->textContent;
}
}
}
return $_links;
}
#==============================================================================
## php main
#==============================================================================
$scheme = 'http://';
$domain = 'www.sr-online.de';
$url = $scheme . $domain . '/sronline/nachrichten/hoerfunknachrichten/hoerfunknachrichten_aktuell100.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->preserveWhiteSpace = true;
set_error_handler('handleError', E_WARNING);
$dom->loadHTML($meta . $page);
restore_error_handler();
## hier wird der Hauptcontainer referenziert
$node = $dom->getElementById('mitte_text');
$_links = get_links($node);
foreach ($_links as $key => $link)
{
$container = file_get_contents($scheme.$domain.$link['href']);
set_error_handler('handleError', E_WARNING);
$dom->loadHTML($meta . $container);
restore_error_handler();
$node = $dom->getElementById('mitte_text');
## XPath für die Node feststellen
$nodexpath = $node->getNodePath();
$xpath = new DOMXpath($dom);
$elements = $xpath->query($nodexpath .'/h1');
if ($elements->length > 0 ) $_links[$key]['heading_1'] = $elements->item(0)->textContent;
## SR benutzt leid3r manchmal H1 und manchmal H2 an dieser Stelle
$elements = $xpath->query($nodexpath .'/div[1]/h1');
if ($elements->length > 0 ) $_links[$key]['heading_2'] = $elements->item(0)->textContent;
$elements = $xpath->query($nodexpath .'/div[1]/h2');
if ($elements->length > 0 ) $_links[$key]['heading_2'] = $elements->item(0)->textContent;
$elements = $xpath->query($nodexpath .'/div[2]/p');
if ($elements->length > 0 ) $_links[$key]['teaser'] = $elements->item(0)->textContent;
}
###################################################################################################
## HTML Out
###################################################################################################
?>
<?php echo $meta; ?>
<!DOCTYPE HTML>
<html lang="de">
<head>
<title>SR-Online</title>
</head>
<body>
<pre>
<?php
echo htmlspecialchars(print_r($_links, 1));
?>
</pre>
</body>
</html>
Grüße
TS