tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von hela
ERLEDIGT
NEIN
ANTWORTEN
8
ZUGRIFFE
595
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    blockmarc blockmarc ist offline Grünschnabel
    Registriert seit
    Nov 2011
    Beiträge
    3
    Hallo,

    habe zwar viele Beiträge in diesem Forum durchgelesen und vieles gegoolet, bin bis jetzt aber nicht findig geworden.

    Ich möchte in eine bestehende Homepage bestimmte Inhalte fremder Seiten einlesen bzw. anzeigen lassen und würde mich sehr freuen, wenn Ihr mir dabei helfen könntet. Eins gleich vorweg: die Erlaubnis zur Einbindung liegt vor!

    Derzeit mache ich es mit iframe. Die Nachteile brauche ich wohl nicht auflisten.

    Die einzubindenen Seiten beinhalten eine Tabelle. Ich möchte diese Tabelle ohne Überschriftszeile mit meinen CSS-Formatierungen auf meiner Seite anzeigen lassen.

    Wie kann ich es mit PHP umsetzen? Kennt jemand von Euch womöglich ein Tutorial? Oder kann mir ein Paar Tipps geben?

    Vielen herzlichen Dank im Voraus!
     

  2. #2
    Avatar von sheel
    sheel sheel ist gerade online Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.506
    Hi und Willkommen bei tutorials.de

    Das größte Problem am Ganzen:
    Falls es mehrere tables gibt/gene kann, musst du irgendwie erkennen,
    welche deinen gewünschten Inhalt hat.
    Wie? Hängt von der Seite ab.

    Dann...du willst also alles CSS-mäßige etc. wegkürzen?
    Trenn die Tabelle in ihre einzelnen Elemente auf, in ein zweidim. Array.
    Dann alle <...> wegkürzen (striptags etc.).

    Dann brauchst du nur alles mit Schleifen durchgehen
    und gibst es zusammen mit deiner Formatierung wieder aus.

    Gruß
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  3. #3
    Avatar von ComFreek
    ComFreek ComFreek ist gerade online [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.364
    Blog-Einträge
    4
    Hallo blockmarc, auch von mir ein Herzliches Willkommen!

    Zuerst musst du den Part mit der Tabelle vom restlichen Code extrahieren.
    Entweder kannst du das mit einem HTML-Parser versuchen oder mit Suchen & Schneiden (strpos(), substr()).

    Wobei beim Parsen der Quellcode valide sein muss. Das kommt natürlich auf den Parser an, aber ehrlich gesagt scheitert es meistens daran.
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  4. #4
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Und wenn parsen, dann nicht mit strpos() etc sondern mit Regulären Ausdrücken. Gibt die sichereren Ergebnisse
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  5. #5
    blockmarc blockmarc ist offline Grünschnabel
    Registriert seit
    Nov 2011
    Beiträge
    3
    Hallo,

    vielen Dank für Eure Antworten!

    @sheel
    Auf der einzubindenden Seite gibt es nur eine einzige Tabelle.

    Ehrlich gesagt, hoffte ich etwas aussagekräftigere Antworten zu bekommen, denn ich bin kein Programmierer. Könntet Ihr Eure Antworten vielleicht mit Beispielen erleuchten?

    Danke schön!
     

  6. #6
    Avatar von hela
    hela hela ist offline Mitglied Smaragd
    tutorials.de Premium-User
    Registriert seit
    Oct 2004
    Beiträge
    1.123
    Zitat Zitat von blockmarc Beitrag anzeigen
    .. Ehrlich gesagt, hoffte ich etwas aussagekräftigere Antworten zu bekommen, denn ich bin kein Programmierer ...
    Hallo,
    ich bin auch kein Programmierer, aber du hast nun mal deine Frage im PHP-Forum und nicht im Jäger- und Sammler-Forum gestellt.

    Überigens könnte man die Tabelle(n) auch mit XSLT extrahieren:
    PHP-Code:
    <?php

    $quelle 
    'http://de.selfhtml.org/html/tabellen/anzeige/colspan.htm';
    $elementName ='table';

    $xslDoc = <<<EOT
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:output method="xml" indent="yes" encoding="UTF-8" />
      <xsl:template match="/">
        <root>
          <xsl:apply-templates />
        </root>
      </xsl:template>
      <xsl:template match="
    $elementName">
        <xsl:copy-of select="." />
      </xsl:template>
      <xsl:template match="text()" />
    </xsl:stylesheet>
    EOT;

    $domDoc = new DomDocument();
    $domDoc->loadHTMLFile($quelle);
    $xslObj = new DomDocument();
    $xslObj->loadXML($xslDoc);
    $xsltRes = new XSLTProcessor;
    $xsltRes->importStylesheet($xslObj);
    $xslOutput $xsltRes->transformToXML($domDoc);

    header('Content-type: text/xml; charset=UTF-8');
    echo 
    $xslOutput;
    ?>
    Das hätte den Vorteil, dass man die Tabelle gleich an die richtige Stelle im Template der HTML-Anzeigeseite packen könnte.
     

  7. #7
    blockmarc blockmarc ist offline Grünschnabel
    Registriert seit
    Nov 2011
    Beiträge
    3
    Hallo hela,

    vielen Dank für Deine offene und bebilderte Antwort!

    Sicherlich hast Du Recht, aber dieses Forum heißt auch Tutorials und nicht nur Fachforum oder so... Möglicherweise habe ich jedoch ein falsches Verständnis von... Bitte auf jeden Fall um Verständnis.

    Dein Beispiel ist recht einleuchtend und vielversprechend, es geht bei mir aber nicht vollständig auf... Wenn ich es in eine HTML-Seite einbinde, dann klappt es nämlich nicht, merkwürdigerweise wird der Code ab der Zeile

    Code :
    1
    
    EOT;

    von meinem Editor (Dreamweaver) nicht mehr farblich gekennzeichnet und wenn ich die Seite auf meinem (lokalen XAMPP) Server aufrufe bekomme ich nur folgendes angezeigt:

    EOT; $domDoc = new DomDocument(); $domDoc->loadHTMLFile($quelle); $xslObj = new DomDocument(); $xslObj->loadXML($xslDoc); $xsltRes = new XSLTProcessor; $xsltRes->importStylesheet($xslObj); $xslOutput = $xsltRes->transformToXML($domDoc); header('Content-type: text/xml; charset=UTF-8'); echo $xslOutput; ?>
    Wenn ich jedoch Dein Beispiel als PHP-Seite aufrufe, klappt es, wobei auch hier der Code ab derselben stelle nicht farblich hervorgehoben wird.

    Ich weiß leider nicht wo ich suchen soll bzw. wo der Fehler ist... weißt Du es vielleicht?

    Herzlichen Dank!
     

  8. #8
    Avatar von sheel
    sheel sheel ist gerade online Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.506
    Hi

    Zur Forenwahl:
    Du hast aber gesehen, dass sich hier einige Kategorien befinden, die alle zu tutorials.de gehören?
    Da hast du die Falsche erwischt, wenn du nicht programmieren willst.

    Zur Datei:
    nun, da das PHP ist, musst du es als PHP-Datei aufrufen
    Und so funktionierts ja, laut dir.

    Das mit der Farbhervorhebung liegt nur an Dreamweaver
    und hat für die Funktionalität keinen Einfluss.
    Warum der das so macht oder ob man es umstellen kann...
    hab DW nicht, kann dazu also nichts sagen.

    Zu deinem lokalen XAMPP: Hast du es dort auch als PHP-Datei gemacht?
    Wenn dann noch immer eine derartige Ausgabe kommt,
    ist der Server falsch eingestellt.

    Gruß
    Geändert von sheel (19.11.11 um 23:51 Uhr) Grund: Link gerichtet
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  9. #9
    Avatar von hela
    hela hela ist offline Mitglied Smaragd
    tutorials.de Premium-User
    Registriert seit
    Oct 2004
    Beiträge
    1.123
    Hallo blockmarc,

    sheel hat schon einiges beantwortet, wenn's jetzt doppelt kommt, dann hat das nichts zu bedeuten.

    Mein oben gezeigtes Beispiel ist ein PHP-Dokument und das kannst du natürlich nicht in ein HTML-Dokument einbinden, umgekehrt ist das möglich. Meine Bemerkung mit dem HTML-Template ist offensichtlich missverständlich: Gemeint ist ein XSL-Template, aus dem das HTML-Ausgabedokument generiert wird.

    Im obigen Beispiel ist die Variable $xslDoc das XSL-Template, mit dem allerdings nur die Tabelle(n) als String ausgegeben und im Browser angezeigt werden. Diese Variable ist in der Heredoc-Syntax notiert, die viele Editoren und Anzeigeprogramme mit Syntaxhervorhebung offensichtlich nicht verstehen. Das sollte dich nicht weiter beunruhigen.

    Da die Tabellenausgabe ein String ist, könntest du diesen String einfach in dein HTML einfügen. Vielleicht ist das aus folgendem Beispiel ersichtlich, in dem ich aus (leicht geändertem) o.g. Beispiel eine Funktion gemacht habe:
    PHP-Code:
    <?php
    $quelle 
    'http://de.selfhtml.org/html/tabellen/anzeige/colspan.htm';

    function 
    fremdTabelle($qAddr)
    {
    /**
     * Kopiert alle Tabellenknoten aus dem Quelldokument und gibt sie als String
     * innnerhalb von DIV-Tags aus.
     */
    $xslDoc = <<<EOT
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:output method="xml" omit-xml-declaration="yes" indent="yes" encoding="UTF-8" />
        <xsl:template match="/">
            <div><xsl:apply-templates /></div>
        </xsl:template>
        <xsl:template match="table">
            <xsl:copy-of select="." />
        </xsl:template>
        <xsl:template match="text()" />
    </xsl:stylesheet>
    EOT;
    $domDoc = new DomDocument();
    $domDoc->loadHTMLFile($qAddr);
    $xslObj = new DomDocument();
    $xslObj->loadXML($xslDoc);
    $xsltRes = new XSLTProcessor;
    $xsltRes->importStylesheet($xslObj);
    return 
    $xsltRes->transformToXML($domDoc);
    }

    header('Content-type: text/html; charset=UTF-8');
    ?>

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title>Tabellenübernahme</title>
        </head>
        <body>
            <h1>Tabellenübernahme</h1>
            <dl>
                <dt>Quelle:</dt>
                <dd>
                    <?php echo '<a href="'.$quelle.'">'.$quelle.'</a>'?>
                </dd>
            </dl>
            <hr>
            <?php echo fremdTabelle($quelle); ?>
        </body>
    </html>
    Und nochmal: Das ist ein PHP-Dokument und gehört auf den Server. Funktioniert auch nur, wenn unter PHP5 die XSL-Erweiterung installiert ist - scheint aber bei dir der Fall zu sein und bei Zweifeln in der phpinfo nachsehen.
    Geändert von hela (19.11.11 um 23:15 Uhr)
    blockmarc bedankt sich. 

Ähnliche Themen

  1. Include auf fremde html Seite
    Von markberg im Forum PHP
    Antworten: 8
    Letzter Beitrag: 14.10.05, 09:35
  2. Antworten: 6
    Letzter Beitrag: 03.02.05, 13:30
  3. "Fremde" Library´s einbinden
    Von Quick_Mik im Forum VisualStudio & MFC
    Antworten: 3
    Letzter Beitrag: 13.07.04, 21:55
  4. Eine fremde Seite includieren mit PHP?
    Von ITBaer im Forum PHP
    Antworten: 3
    Letzter Beitrag: 25.11.03, 15:25
  5. Antworten: 4
    Letzter Beitrag: 07.05.02, 15:45