LTW: Wikipedia einbinden

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. 
  1. Hello,

    Ich habe ein Problem mit PHP. Es wurde ein code geschrieben, der mit [...] eine Seite in eine Variable einliest. Dann wurden im Quelltext mit folgendem code alle relativen Pfade zu absoluten gemacht.

    Das Problem ist, wenn man damit eine Wikipedia-Seite aufruft, so wird der Inhalt ein zweites Mal im linken Rand dargesetllt.

    Gleiche Frage, wie an https://forum.selfhtml.org/?t=187125&m=1243363

    Hast Du schon mal in das resultiernede HTML-Dokument hineingeschaut, was dort entsteht?

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
  2. Hallo,

    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. [code lang=php]

    unverständliche Codewüste mit unnötig komplizierten Konstrukten ohne

    jeglichen Kommentar, dafür mit nichtssagenden Variablennamen gespickt,

    gelöscht.

    Das Problem ist, wenn man damit eine Wikipedia-Seite aufruft, so wird der Inhalt ein zweites Mal im linken Rand dargesetllt.

    Ich wundere mich, dass dieser Code überhaupt etwas macht :-)
    Du scheinst irgendwelche href-Attribute zu suchen, aber nur solche, die von einfachen Anführungszeichen gefolgt werden, ...

    Welche Fehlersuchstrategien hast Du bisher verfolgt?
    Grundsätzlich rate ich Dir dazu, eine Funktion/Methode zu schreiben, die mit einer Zeichenkette etwas definiertes macht. Die Aufgabe ist in einem netten Kommentar zu beschreiben, falls die Funktion zu komplex wird, gibst Du einzelne Aufgaben an weitere übersichtliche Funktiönchen weiter. So hast Du die Möglichkeit zu einigermaßen verständlichem und wartbaren Code zu kommen.

    Freundliche Grüße

    Vinzenz

  3. Das Problem ist, wenn man damit eine Wikipedia-Seite aufruft, so wird der Inhalt ein zweites Mal im linken Rand dargesetllt.

    Ungeachtet von deiner technischen Lösung bietet die Wikipedia eine API um die Inhalte einzubinden.

    Wenn du die Inhalte der Wikipedia Lizenzkonform abgreifen willst, ist das zwar so kein Problem wenn du die vorgaben einhältst, allerdings verursachst du damit möglicherweise massiven Traffic auf den Wikimedia-Servern - das sieht die Wikimedia-Foundation nicht gerne, da die Infrastruktur dann von denen bezahlt werden muss.