Liebes Forum,
ich möchte auf meiner Seite zwecks einfacher Wartung Unterseiten (die meistens von anderen Autoren stammen) mittles PHP im body-Bereich auslesen und in meiner index.php anzeigen. Dazu ist es oft nötig, Verweisziele zu korrigieren, da der relative Pfad der originalen HTML-Dateien ein anderer ist, als meine index.php.
Mit den Bilderquellen tut das wunderbar per
$html_body = preg_replace('/((?i)src=)"?([\S^>^"]*)/', '\1"'.$ref_korrektur.'\2', $html_body);
Aber bei den Links ist das etwas komplizierter. Es sollen nur relative Links modifiziert werden; Verweisziele wie "http://..." und "mailto:..." sollen unverändert bleiben. Ich scheitere daran, in meiner regexp eben diese Fälle erfolgreich auszuschließen. So weit bin ich heute nacht noch gekommen:
$html_body = preg_replace('/((?i)href=)"?(?!(mailto:[\S^>^"]*)|(http:[\S^>^"]*))([\S^>^"]*)/', '\1"index.php?aktion=informationen&thema='.$ref_korrektur.'\2', $html_body);
Mir sind gleich zwei Dinge nicht klar:
1. Warum scheitert meine regexp nicht an "mailto:" und "http:"?
2. Woher kommen denn die schließenden Anführungszeichen (sowohl bei den Bildquellen, als auch bei den Verweiszielen)?
Bin um jeden Denkanstoß dankbar.
Liebe Grüße aus Ellwangen,
Felix Riesterer.