![]() |
[PHP] URLs umschreiben
Hallo erstmal,
ich bin mal wieder bei PHP und diesmal möchte ich gerne URLs umschreiben. Genauer gesagt, habe ich den HTML-Quellcode und möchte jetzt (wahrscheinlich mit preg_replace()) alle links umschreiben sodass sie nicht mehr aucf die orginal-Seite zeigen sondern auf meine. Also z.B. Seite ![]() Link auf datei.php >>> http://ich.de/script.php?url={http://server/dir/datei.php-base64encoded} Link auf ![]() Also alle Links müssen: - aufgelöst werden (relativ>absolut) - base64encoded werden - und dann als parameter zur URL des aktuellen Scripts angehangen werden. Jetzt zu meinen Problemen:
Code:
Das wäre mein Regex für die URL (im ersten Backref. zu finden) - ist der so ok ?
#href=["'](.*)["']#gi
Und wie kann ich die möglicherweise relative URL auflösen ? (Das encoden und anhängen krieg ich noch hin ... ;) |
Re: [PHP] URLs umschreiben
Kann auch sein, dass ich mich gewaltig irre, aber meiner Meinung nach werden alle Links bei der Ausgabe in absolute verwandelt...außerdem weißt du doch auf welcher Seite du dich befindest wenn du dort die Links überprüfst...
Flare |
Re: [PHP] URLs umschreiben
Zitat:
Grüße Faux |
Re: [PHP] URLs umschreiben
:wiejetzt:
Ich habe HTML z.B.
Code:
von
[url="datei.htm"]Text[/url]
[url="http://google.de/dir/datei.htm"]Text[/url] [url="/dir/datei.htm"]Text[/url] [url="/datei.htm"]Text[/url] [url="http://google.de/datei.htm"]Text[/url] ![]() Und muss jetzt die ersten drei nach ![]() ![]() Und ist mein Regex richtig ? oder muss ich ihm irgendwie sagen, dass das abschließende ' bzw. " dasgleiche Zeichen ist, wie das anführende ? |
Re: [PHP] URLs umschreiben
Also - das Problem bleibt :stupid:
|
Re: [PHP] URLs umschreiben
mit den relativen links kannst du doch ganz einfach checken:
gucke ob der link mit http:// anfängt, wenn nicht is es ein relativer link und knallst einfach die url der seite dran. (evtl gefolgt von einem /). edit1: ich hab dir das ma eben in php hingeknallt. müsste eigentlich funzen, habs nur 1-2x getestet.
Code:
<?php
function ReplaceCallback($hit) { //$hit[1] = "|' //$hit[2] = http|ftp //$hit[3] = url global $currentURL; //protokoll angegeben? if(!empty($hit[2])) $url = "{$hit[2]}://"; else { //relativer link, akt. url anfügen $url = $currentURL; if($hit[3][0] != '/') $url .= '/'; } $url .= $hit[3]; $url = base64_encode($url); $result = " href={$hit[1]}http://www.meine-seite/script.php?url=$url{$hit[1]}"; return $result; } //die url, dessen html man grade liest $currentURL = 'http://www.google.de'; //der reg. ausdruck (für ftp & http links) $expr = '# href=(\'|")(?:(http|ftp)://)?(.*)\1#i'; //quelltext einlesen $html = file("./test.htm"); $html = implode("", $html); //links ersetzen $html = preg_replace_callback($expr, ReplaceCallback, $html); //ausgabe echo $html; ?> |
Re: [PHP] URLs umschreiben
Es geht soweit schon ... nur ist der regex ein bisschen zu greedy ...
Code:
Das isser ... und er nimmt z.B. als URL auch mal
$regex = '# href=(\'|")(http://)?(.*)\1#i';
Code:
aber danke schonmal ... ;)
http://www.server.com/" class="txt
|
Re: [PHP] URLs umschreiben
Mach ihn ungreedy (Modifier U)
Code:
Ich nehm den zusätzlichen Müll zurück *fg*
$regex = '# href=(\'|")(http://)?(.*)\1#Ui';
|
Re: [PHP] URLs umschreiben
edit: hatte sich schon erledigt, hatte was überlesen ;)
$expr = '# href=(\'|")(?:(http|ftp)://)?(.*?)\1#i'; müsste das ganze dann doch ungreedy machen (ungetestet) edit2: habs getestet, geht auch mit solchen links Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:19 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