Ein Beispiel um aus einem HTML-Abschnitt alle Links zu extrahieren um sie
z.B. an anderer Stelle aufzulisten.
<?php
/**
* Links ersetzen
*/
define ('cTEXT_EXLINKS','<br><p><b>Dieser HTML-Abschnitt enthält
Verweise auf diese Webseiten</b></p><pre>%s</pre>');
$example = <<< EOT
<p>Dies ist ein <a href="http://example.org">Beispiel</a> wie man in
einem HTML-Abschnitt alle Links ersetzen kann.<br>
Das kann man beispielsweise gut für die
<a href="http://www.erzeugung.de">Erzeugung</a> von
<a href="http://www.druckversion.de">Druckversionen</a> verwenden.<br>
Verweise deren URL nicht mit http:// beginnen, also i.d.R.
<a href="#">projekt- oder seiteninterne Links</a>, werden dabei
ignoriert.<br>
Erläuterungen zu den einzelnen Funktionen finden sich unter
<a href="http://www.php.net">PHP.net</a>
</p>
EOT;
$ExternalUrls = array();
function ExtractUrls($lbl, $url, &$url_stack)
{
static $c = 1;
if (eregi('^http://', $url)){
$url_stack[$c] = $url;
$result = sprintf('<u>%s</u> [<b>%d</b>]', $lbl, $c);
$c++;
} else {
$result = $lbl;
}
return $result;
}
$printcontent = preg_replace(
'#<a.*href="(.*)".*>(.*)</a>#Uie',
'ExtractUrls("\2", "\1", $ExternalUrls)',
$example
);
$exlinks = '';
if ($ExternalUrls){
$tmp = '';
foreach ($ExternalUrls as $k => $v){
$tmp.= sprintf ('[<b>%d</b>] %s<br>', $k, $v);
}
$exlinks = sprintf(cTEXT_EXLINKS, $tmp);
}
print $printcontent.$exlinks;
?>