![]() |
Relative Referenzen in HTML-Quellcode in absolute Referenzen umwandeln?
Hallo! Ich habe von einem Webserver den Quellcode einer Webseite geholt und möchte darin alle relativen Referenzen in Linkattributen (href, src, ...) in absolute Referenzen umwandeln. Die lokal geöffnete HTML-Datei soll somit gleich aussehen (Bilder, Javascript, ...), wie wenn sie online vom Webserver geladen würde. Gibt es für diese Konvertierung schon fertige Bibliotheken für Delphi oder muss ich das alles selbst parsen und konvertieren?
|
AW: Relative Referenzen in HTML-Quellcode in absolute Referenzen umwandeln?
Hallo,
es würde sich RegEx anbieten.
Delphi-Quellcode:
würde ./, ../ oder belibig viele Punkte gefolgt von einen Slash ersetzen - sofern die Bedingung =".[.]/ erfüllt ist - mit ="www.mywebsite.de/[...].
uses
System.RegularExpressionsCore; function RelativeToAbsolute (const Html, Path, Pattern : string) : string; var r : TPerlRegEx; begin r := TPerlRegEx.Create; try r.Subject := UTF8Encode (Html); r.Options := [preCaseLess]; r.RegEx := Pattern; r.Replacement := UTF8string (Path); r.ReplaceAll; Result := string (r.Subject) finally FreeAndNil (r) end end; procedure TForm1.Button1Click(Sender: TObject); begin Memo2.Text := RelativeToAbsolute (Memo1.Text, '="www.mywebsite.de/', '="\.+\/?'); end; Beispiel:
Wenn Deine relativen Pfad variieren, dann müsstest Du das nur entsprechend im Suchmuster entsprechend abbilden und es sollte es tun. |
AW: Relative Referenzen in HTML-Quellcode in absolute Referenzen umwandeln?
Da gibt es aber noch sehr viel mehr zu beachten. Z.B. kann vor und nach dem = Whitespace kommen, statt " können ' verwendet werden, oder die Attribute könne sogar in einer anderen Reihenfolge stehen, z.B. <a rel="nofollow" href="...">. Außerdem muss man bei sowas unbedingt non-greedy matchen! (Kann man auch, indem man im Regex statt . [^"] schreibt).
Je nachdem, was du erreichen willst, könnte eine sehr viel einfachere und robustere Lösung darin bestehen, einfach ganz oben folgendes in den <head>-Bereich einzufügen: <base href="http://example.com/" /> |
AW: Relative Referenzen in HTML-Quellcode in absolute Referenzen umwandeln?
Zitat:
|
AW: Relative Referenzen in HTML-Quellcode in absolute Referenzen umwandeln?
Da anscheinend IE6 (als offenbar einzige Browserversion) Probleme mit dem base-Tag hat, sollte man diesen evtl. mit einem
![]() <base href="http://example.com/en/"><!--[if lte IE 6]></base><![endif]--> |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz