Ich habe ein Problem mit PHP. Es wurde ein code geschrieben, der mit file_get_contents("http://www.example.com");
eine Seite in eine Variable einliest. Dann wurden im Quelltext mit folgendem code alle relativen Pfade zu absoluten gemacht. ~~~php
$f = parse_url("http://www.example.com");
$h = $f['host'] . $f['path'];
$k = explode("/", $h);
for ($i = 0; $i <= count($k) - 3; $i++) {
$l .= $k[$i] . "/";
}
$l .= $k[count($k)-2];
$d = explode(" ", $quelltext);
$g=0;
for ($i = 0; $i <= count($d)-1; $i++) {
if (strlen($d[$i]) > 6) {
$n=substr($d[$i], 0, 6);
if (substr($d[$i], 6, 1) == "/") {
if ($n == "href='"){
$m=explode("'", $d[$i]);
$m[1]= "http://" . $f['host'] . $m[1];
$d[$i] = join("'", $m);
} elseif ($n == 'href="') {
$m=explode('"', $d[$i]);
$m[1]= "http://" . $f['host'] . $m[1];
$d[$i] = join('"', $m);
}
} else {
if ($n == "href='"){
$m=explode("'", $d[$i]);
$m[1]= "http://" . $l . $m[1];
$d[$i] = join("'", $m);
} elseif ($n == 'href="') {
$m=explode('"', $d[$i]);
$m[1]= "http://" . $l . $m[1];
$d[$i] = join('"', $m);
}
}
$n=substr($d[$i], 0, 5);
if (substr($d[$i], 5, 1) == "/") {
if ($n == "src='"){
$m=explode("'", $d[$i]);
if(substr($m[1], 0, 7)!=="http://") {
$m[1]= "http://" . $f['host'] . $m[1];
$d[$i] = join("'", $m);
}
} elseif ($n == 'src="') {
$m=explode('"', $d[$i]);
if(substr($m[1], 0, 7)!=="http://") {
$m[1]= "http://" . $f['host'] . $m[1];
$d[$i] = join('"', $m);
}
}
} else {
if ($n == "src='"){
$m=explode("'", $d[$i]);
if(substr($m[1], 0, 7)!=="http://") {
$m[1]= "http://" . $l . $m[1];
$d[$i] = join("'", $m);
}
} elseif ($n == 'src="') {
$m=explode('"', $d[$i]);
if(substr($m[1], 0, 7)!=="http://") {
$m[1]= "http://" . $l . $m[1];
$d[$i] = join('"', $m);
}
}
}
}
}
$quelltext = join(" ", $d);
Das Problem ist, wenn man damit eine Wikipedia-Seite aufruft, so wird der Inhalt ein zweites Mal im linken Rand dargesetllt.