Hallo,
wenn das Vorhaben auf Regular Expressions basiert: ja. Sofern der zu ersetzende Code noch keine Entities enthält, ist der andere Weg allerdings in höchstem Maße trivial.
Also manchmal muß ich mich schon wundern was hier für Statements und Tipps abgegeben werden. Vor allem dann wenn es 'alte Forumshasen' sind.
Das Netz quilt doch wirklich über mit Lösungsbeispielen für solche Standardaufgaben wie mal eben eine HTML-Seite zu parsen und irgendetwas darin zu ändern.
Aber vielleicht sollte man, wenn man eine qualifizierte Antwort ohne viel Tamtam drumherum haben möchte, nicht hier fragen?
Und es würde mich wundern, wenn die FAQ der Newsgroup de.comp.lang.php hier nicht bekannt wäre. Im Gegenteil, ich denke, das die meisten (von den 'Forumshasen'), wenn sie etwas machen wollen und nicht genau wissen wie, dort schauen gehen, oder dort in der Vergangenheit nachgeschaut haben.
Viele Grüße,
Horst
// Diese Funktion arbeitet eine ganze (gepufferte) HTML-Seite ab,
// indem sie jeden a- area- und img-tag findet, die darin befindliche URL
// gegebenenfalls von der Funktion rewrite_url() umschreiben laesst, die
// umgeschriebene Seite in der Variablen $newpage sammelt und am Ende
// als komplette Seite zurückgibt!
function rewrite_page($page)
{
$a = array();
$newpage = '';
// 1 2 3 4 <5> 6 7
$pattern = '=^(.*?)(<area|<a|<img)(.*?)(href=|src=)"|'"|'(>.*$|>.*?</a>.*$)=msi';
while(preg_match($pattern, $page, $a))
{
if(count($a)>1)
{
$page = $a[7];
$newpage .= $a[1].$a[2].$a[3].$a[4].'"'.rewrite_url($a[5]).'"'.$a[6];
}
}
return $newpage.$page;
}
function rewrite_url($url)
{
$temp = explode('?',$url);
if(!isset($temp[1]))
{
// kein Querystring in der URL
return $url;
}
else
{
// es gibt einen Querystring und darin vorhandene &'s werden umgeschrieben
return $temp[0].'?'.str_replace('&','&',$temp[1]);
}
}