PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : pfade aus html-String filtern


karim
19.06.2003, 15:44:26
Hallo

Hab folgendes Problem:

Generiere aus HTML-Datei eine neu, bloss modifiziert.
Da die modifizierte aber nicht mehr im gleichen Verzeichniss liegt wie das Original, stimmen alle Pfade nicht mehr (Bilder, Links, etc.)

Wie kann ich möglichst einfach ALLE Pfade aus meinem String herausfiltern, um sie dann anpassen zu können?

Wäre sehr dankbar für Tips.

Gweilo
22.06.2003, 09:14:09
suchen und ersetzen?
Ich weiss nicht, ob ich dich richtig verstanden habe, willst du einfach alle pfade in der html Datei ersetzen? Dazu gibt es in fast allen editoren funktionen, die suchen und ersetzen heissen. Damit kannst du nach dem pfad suchen und alle treffer mit etwas anderem ersetzen.

karim
24.06.2003, 11:13:55
Ja schon, ich möchte das aber dynamisch machen.

D.h. mein Skript nimmt sich eine HTML-Seite auf meiner domain, verändert alle links, und gibt die seite dann aus.

Gweilo
24.06.2003, 11:46:50
achsoo. dachte schon, wär sonst etwas eine banale frage =)

schau mal auf selfphp folgende befehle nach:
eregi_replace
ereg_replace
str_replace
und die Filebefehle zum öffnen und schreiben der Datei

Damit solltest du problemlos die Pfade ändern können.

karim
24.06.2003, 23:45:10
ja wär schon etwas banal ;-)

Die Befehle die Du aufgelistet hast kenne ich, allerdings liegt das Problem darin, alle möglichen URLs in einem Dokument zu finden.
Also eigentlich muss ich nur die relativen Pfade ändern, da das neue Dokument nicht im gleichen Verzeichniss liegt wie das Original.
Versuch s mal mit dem Ansatz, dass jeder String, welcher ausgehen mit . , .. , oder einem Unterverzeichniss (ausgehend von der Originaldatei) wohl ein relativer Pfad sein wird. Ist allerdings nicht sehr simpel und weiss auch nicht ob es funzt.

Die einfachste Lösung wäre natürlich, alle Dokument im selben Ordner zu haben.....

Nu ja ma schaun..

Gruss

Gweilo
25.06.2003, 09:31:49
ein paar scriptschnipsel, die dir weiterhelfen könnten:

alle (php&html) Dateinamen aus allen unterordnern auslesen

$files = array();
$ordner = array("");

function getfolders()
{
GLOBAL $files,$ordner;
foreach ($ordner as $dir)
{
$verz=opendir("../".$dir);
while ($file = readdir ($verz)) {

if (is_dir("../".$dir."/".$file) && $file!="." && $file!="..")
{
if ($dir) // unterverzeichnis
array_push($ordner,$dir."/".$file);
else
array_push($ordner,$file);
}
if (is_file("../".$dir."/".$file) && (eregi(".php",$file) || eregi(".htm",$file)))
{
if ($dir) // unterverzeichnis
array_push($files,$dir."/".$file);
else
array_push($files,$file);
}
}
closedir($verz);
}
return $files;
}

$dateiarray=getfolders();


regex für links (von etwas ähnlichem wie ubbcode). Muss noch stark modifiziert werden

function dectags($str,$br)
{
while (preg_match("/<a href="(.+?)">(.+?)</a>/si", $str, $matches)) {

$searchfor = $matches[1];
$replace = $searchfor;
$replace = trim($replace); // remove all leading and trailing whitespaces
if (!stristr($replace,"http://")) {
if (!stristr($replace,"https://")) {
$replace = "http://".$replace;
} else {
$replace = stristr($replace,"https://");
}
} else {
$replace = stristr($replace,"http://");
}
$str = str_replace("." ("".$searchfor."">".$matches[2)","{url=".$replace."">".$matches[2]."{/url}",$str); }

karim
26.06.2003, 09:24:19
Vielen Dank!

Ja so etwas hatte ich mir in etwa auch vorgestellt. Dachte nur, da gäbs vielleicht schon Funktionen dazu in PHP. Aber da muss man wohl selber ran ;-)

Werds dann mal probieren.

Gruss