Indemnis: externe Datei auslesen und einen bestimmten teil ausgeben

Hallo zusammen,

Ich würde gerne von einer externen Seite etwas ohne iFrames auf meiner Seite einbinden. Mit include() funktioniert das auch, allerdings wird dann auch die .css von der eternen Seite geladen und überschreibt meine .css-Definitionen teilweise. Nun habe ich folgenden Code erstellt:

<?php  
$fp = fopen("http://www.handballkreis-mannheim.de/lm98/MaennerkrL.html","r");  
if ($fp) {  
while(!feof($fp)) {  
$file= $file.fgets($fp);  
}  
if (preg_match("-<body>(.*?)</body>-si", $file, $matches));  
{$ausgabe = $matches[1];}  
echo $ausgabe;  
fclose($fp);  
}  
?>

Bis zu der Stelle mit dem preg_match() funktioniert auch alles wunderbar. Das preg_match wollte ich nun dazu nutzen den html code zwischen den body tags zu nehmen und auszugeben.
Wäre cool, wenn ihr mir helfen könntet. Ich fine den Fehler einfach nicht.

LG Indemnis

  1. Hallo zusammen,

    Ich würde gerne von einer externen Seite etwas ohne iFrames auf meiner Seite einbinden. Mit include() funktioniert das auch, allerdings wird dann auch die .css von der eternen Seite geladen und überschreibt meine .css-Definitionen teilweise. Nun habe ich folgenden Code erstellt:

    <?php

    $fp = fopen("http://www.handballkreis-mannheim.de/lm98/MaennerkrL.html","r");
    if ($fp) {
    while(!feof($fp)) {
    $file= $file.fgets($fp);
    }
    if (preg_match("-<body>(.*?)</body>-si", $file, $matches));
    {$ausgabe = $matches[1];}
    echo $ausgabe;
    fclose($fp);
    }
    ?>

    
    >   
    > Bis zu der Stelle mit dem preg\_match() funktioniert auch alles wunderbar. Das preg\_match wollte ich nun dazu nutzen den html code zwischen den body tags zu nehmen und auszugeben.  
    > Wäre cool, wenn ihr mir helfen könntet. Ich fine den Fehler einfach nicht.  
    >   
    > LG Indemnis  
      
    Hier ein schönes Script dazu, mit Erklärung:  
    http://www.swanja.de/php3/center/anzeige.php3?script=../must\_04/html\_datei2.php3&source=no  
      
    Mit freundlichen Grüßen  
      
    Hunter 9999
    
  2. Hi,

    Ich würde gerne von einer externen Seite etwas ohne iFrames auf meiner Seite einbinden.

    und der Betreiber/Inhaber der Fremdseite gestattet das auch?

    Mit include() funktioniert das auch, allerdings wird dann auch die .css von der eternen Seite geladen und überschreibt meine .css-Definitionen teilweise.

    ähm, nein. Bestimmt nicht. Wenn du mit include nur die HTML-Ressource einbindest, wird auch nur die geladen, und nicht noch eine CSS-Ressource dazu.
    Es gibt aber ein anderes, viel grundlegenderes Problem: Wenn du ein vollständiges HTML-Dokument mit include einbindest, hast du nachher *innerhalb* deines body je ein zweites head- und body-Element. Dein Dokument ist damit invalide und von einem Browser nicht mehr sinnvoll interpretierbar.

    <?php
    $fp = fopen("http://www.handballkreis-mannheim.de/lm98/MaennerkrL.html","r");
    if ($fp) {
    while(!feof($fp)) {
    $file= $file.fgets($fp);
    }
    if (preg_match("-<body>(.*?)</body>-si", $file, $matches));

    Schön. Ein if-Statement, das ohne Anweisungsblock abgeschlossen wird. :-)
    Damit wird der nachfolgende, geklammerte Block natürlich unabhängig vom Ergebnis der Abfrage ausgeführt - was im Erfolgsfall nicht schlimm ist; falls das preg_match() fehlschlägt (false ergibt), entsteht Unsinn.

    {$ausgabe = $matches[1];}

    Bis zu der Stelle mit dem preg_match() funktioniert auch alles wunderbar. Das preg_match wollte ich nun dazu nutzen den html code zwischen den body tags zu nehmen und auszugeben.

    Und was erhältst du stattdessen?

    Wäre cool, wenn ihr mir helfen könntet.

    Wäre cool, wenn du uns verraten würdest, was das konkrete Problem ist.

    Ciao,
     Martin

    --
    Ein Snob ist ein Mensch, der sich auf ein Stachelschwein setzt, ohne eine Miene zu verziehen - nur weil ihm jemand gesagt hat, das sei ein Designersessel.
    1. Ich würde gerne von einer externen Seite etwas ohne iFrames auf meiner Seite einbinden.

      und der Betreiber/Inhaber der Fremdseite gestattet das auch?

      Da kann ich mich nur anschließen

      Mit include() funktioniert das auch, allerdings wird dann auch die .css von der eternen Seite geladen und überschreibt meine .css-Definitionen teilweise.

      ähm, nein. Bestimmt nicht. Wenn du mit include nur die HTML-Ressource einbindest, wird auch nur die geladen, und nicht noch eine CSS-Ressource dazu.
      Es gibt aber ein anderes, viel grundlegenderes Problem: Wenn du ein vollständiges HTML-Dokument mit include einbindest, hast du nachher *innerhalb* deines body je ein zweites head- und body-Element. Dein Dokument ist damit invalide und von einem Browser nicht mehr sinnvoll interpretierbar.

      Wenn er die gesamte HTML-Datei Includiert wird natürlich auch der link auf die CSS-Datei bzw. das Inline CSS includiert und damit auch geladen
      Natürlich nur unter der Bedingung, das es ander richtigen stelle geladen wird und nicht wie du sagtest im body geladen wird

      Außerdem sagte er auch, das er eigendlich nur das haben möchte, was zwischen den body-Tags steht.
      Bitte richtig lesen!

      Man kann übrigens CSS-Definitionen auch Priorisieren
      Siehe http://www.css-hack.de/CSS+allgemein/!+important
      Was allerdings in diesem Fall ziehmlich umständlich und nicht dem Zweck endsprechend wäre

      Mit freundlichen Grüßen

      Hunter 9999

      1. Wenn er die gesamte HTML-Datei Includiert wird natürlich auch der link auf die CSS-Datei bzw. das Inline CSS includiert und damit auch geladen

        Wenn die Pfade zu den CSS-Files relativ sind oder absolut zum Wurzelverzeichnis wird garnichts geladen, wenn es keine lokale Kopie gibt,

        Natürlich nur unter der Bedingung, das es ander richtigen stelle geladen wird und nicht wie du sagtest im body geladen wird

        Wo wäre die richtige Stelle um ein vollständiges HTML-Dokument in ein anderes vollständiges HTML-Dokument einzubinden?

        Außerdem sagte er auch, das er eigendlich nur das haben möchte, was zwischen den body-Tags steht.
        Bitte richtig lesen!

        Die Anmerkung bezog sich auf die Variante mit include().

        Man kann übrigens CSS-Definitionen auch Priorisieren

        Nein, Priorisieren kann man sich nicht - man kann sie Spezifizieren - das ist ein Unterschied.

        Priorisieren würde bedeuten, dass eine Regel unabhängig von ihrer Position immer die wichtigste ist bzw. Priorität besitzt - das trifft im Fall von CSS aber nicht zu.

        1. Wenn er die gesamte HTML-Datei Includiert wird natürlich auch der link auf die CSS-Datei bzw. das Inline CSS includiert und damit auch geladen

          Wenn die Pfade zu den CSS-Files relativ sind oder absolut zum Wurzelverzeichnis wird garnichts geladen, wenn es keine lokale Kopie gibt,

          Dann natürlich nicht
          Bei einem Kompletten Pfad mit Domain aber schon

          Natürlich nur unter der Bedingung, das es ander richtigen stelle geladen wird und nicht wie du sagtest im body geladen wird

          Wo wäre die richtige Stelle um ein vollständiges HTML-Dokument in ein anderes vollständiges HTML-Dokument einzubinden?

          War so gemeint, das er eine komplette HTML-Seite in eine Datei includiert in der sonst kein HTML steht

          Außerdem sagte er auch, das er eigendlich nur das haben möchte, was zwischen den body-Tags steht.
          Bitte richtig lesen!

          Die Anmerkung bezog sich auf die Variante mit include().

          OK

          Man kann übrigens CSS-Definitionen auch Priorisieren

          Nein, Priorisieren kann man sich nicht - man kann sie Spezifizieren - das ist ein Unterschied.

          Priorisieren würde bedeuten, dass eine Regel unabhängig von ihrer Position immer die wichtigste ist bzw. Priorität besitzt - das trifft im Fall von CSS aber nicht zu.

          Dazu siehe bitte hier und hier

          Mit freundlichen Grüßen

          Hunter 9999

          1. Priorisieren würde bedeuten, dass eine Regel unabhängig von ihrer Position immer die wichtigste ist bzw. Priorität besitzt - das trifft im Fall von CSS aber nicht zu.

            Dazu siehe bitte hier und hier

            Nur weil die Autoren dieser Seite die Bedeutung der verwendeten Worte nicht kennen, ist es noch lange nicht richtig.

            Es gibt in CSS keine Priorität die vom Seitenautor in irgend einer Weise in einem Externen Stylesheet bestimmt werden könnte. Eine Priorität gibt etwas, unabhängig der derzeitigen Reihung, eine Erstrangigkeit. Genau das trifft aber auf CSS nicht zu.

            Es gibt nur eine Spezifität: http://www.w3.org/TR/CSS21/cascade.html#specificity

            z.B. Zitate aus dem zweiten Artikel:

            "Die Wirkweise der !important-Regel ist das "überbieten" der CSS-Prioritäten. Mit ! important setzen Sie die höchste Priorität."

            Nein, Angaben in einem Style-Attribut haben eine höhere Gewichtung.
            Angaben in einem User-Stylesheet mit !important haben ebenfalls eine höhere Gewichtung als jene im Autoren-Stylesheet.

            Das ist ganz klar in [http://www.w3.org/TR/CSS21/cascade.html#cascade] geregelt.

            1. Habe ich es richtig verstanden, dass nur die Bezeichnung Priorität falsch war?
              Dass es eine Gewichtung ist?
              Aber die Wirkung ist doch die Gewollte im Bezug auf das gewünschte Ziel, oder nicht?

              Mit freundlichen Grüßen

              Hunter 9999

              1. Habe ich es richtig verstanden, dass nur die Bezeichnung Priorität falsch war?

                Richtig.

                Dass es eine Gewichtung ist?

                Ja - und eine Gewichtung ist etwas anderes als eine Priorität. Zwar läuft es landläufig auf dasselbe raus, aber im technischen Kontext hat das eben doch Auswirkungen.

                Aber die Wirkung ist doch die Gewollte im Bezug auf das gewünschte Ziel, oder nicht?

                Nein, eben nicht - wenn in dem eingebundenen Dokument ein style-Attribut zu finden ist, kannst du 100x !important schreiben, die Spezifität ist einfach geringer und kann so nicht überschrieben werden.

                1. Habe ich es richtig verstanden, dass nur die Bezeichnung Priorität falsch war?

                  Richtig.

                  Danke, für die Korrektur und Erklärung

                  Dass es eine Gewichtung ist?

                  Ja - und eine Gewichtung ist etwas anderes als eine Priorität. Zwar läuft es landläufig auf dasselbe raus, aber im technischen Kontext hat das eben doch Auswirkungen.

                  Habe jetzt glaube ich auch den Unterschied verstanden

                  Aber die Wirkung ist doch die Gewollte im Bezug auf das gewünschte Ziel, oder nicht?

                  Nein, eben nicht - wenn in dem eingebundenen Dokument ein style-Attribut zu finden ist, kannst du 100x !important schreiben, die Spezifität ist einfach geringer und kann so nicht überschrieben werden.

                  Ich kann mit !important eine Definition nur einer Definition gleicher Gewichtung bevorzugen

                  also z.B. nur wenn beide inline sind oder wenn beide extern sind
                  Richtig?

                  Mit freundlichen Grüßen

                  Hunter 9999

                  1. Habe ich es richtig verstanden, dass nur die Bezeichnung Priorität falsch war?

                    Richtig.

                    Danke, für die Korrektur und Erklärung

                    Dass es eine Gewichtung ist?

                    Ja - und eine Gewichtung ist etwas anderes als eine Priorität. Zwar läuft es landläufig auf dasselbe raus, aber im technischen Kontext hat das eben doch Auswirkungen.

                    Habe jetzt glaube ich auch den Unterschied verstanden

                    Aber die Wirkung ist doch die Gewollte im Bezug auf das gewünschte Ziel, oder nicht?

                    Nein, eben nicht - wenn in dem eingebundenen Dokument ein style-Attribut zu finden ist, kannst du 100x !important schreiben, die Spezifität ist einfach geringer und kann so nicht überschrieben werden.

                    Ich kann mit !important eine Definition nur einer Definition gleicher Gewichtung bevorzugen

                    Wenn ich dich richtig verstanden habe, ja.

                    body a { color: red; }  
                    body a { color: green !important; }
                    

                    Bewirkt grüne Links da die spezifität von body a + !important höher ist als jene von body a

                    fügt man nachher noch ein a { color: yellow !important; } hinzu ändert sich daran nichts da a + !important geringe ist als body a + !important.

                    Das hingegen würde gelb ergeben:

                    body a { color: green;}  
                         a { color: yellow !important; }
                    

                    also z.B. nur wenn beide inline sind oder wenn beide extern sind

                    Ja - wenn aber verschiedene Herkunftsarten der "externen" Stylesheets zusammentreffen, werden diese aufgrund ihrer Herkunft priorisiert (wirklich) - die Reihenfolge steht im Abschnitt 6.4.1 Cascading order.

                    Zum Thema Spezifität aufgrund des Selektors bzw. des style-Attributs:

                    body a { color: green !important;} sowie <a style="color: red !important;" href="http://example.com">baz</a> ergibt die Linkfarbe rot, da die inline-Angabe mehr Gewichtung besitzt.

                    Und auch wenn's unsinnig ist:

                    style="color: red !important; color: black;" hier hätten wir wieder rot, weil !important eine höhere Gewichtung besitzt.

                    1. Genau so meinte ichs in meinem letzten Post ;-)
                      Die verlinkte Seite werde ich mir mal verinnerlichen
                      Danke :-)

                      Mit freundlichen Grüßen

                      Hunter 9999

                2. Nein, eben nicht - wenn in dem eingebundenen Dokument ein style-Attribut zu finden ist, kannst du 100x !important schreiben, die Spezifität ist einfach geringer und kann so nicht überschrieben werden

                  Nachtrag: in diesem style-Attribut muss natürlich ein entsprechendes !important notiert sein ;).

                3. Hallo,

                  Habe ich es richtig verstanden, [...]
                  Dass es eine Gewichtung ist?
                  Ja - und eine Gewichtung ist etwas anderes als eine Priorität.

                  eben, und genau deshalb halte ich den Ausdruck "Priorität" hier für richtiger.

                  Priorität bedeutet, dass jemand oder etwas einen Vorrang vor anderen bekommt, die Beiträge mit geringerer Priorität also überhaupt nicht ins Endergebnis eingehen. So wie die CSS-Regeln mit höherer Spezifizität Vorrang vor den anderen Regeln für die gleiche Eigenschaft haben: Man kann die weniger spezifische Regel auch weglassen, ohne dass sich am Ergebnis etwas ändert (individuelle Browser-Bugs nicht betrachtet).

                  Gewichtung bedeutet aber, dass mehrere Einflüsse unterschiedlich stark zu einem Gesamtergebnis beitragen, das Ergebnis also ein Mittelwert aus den Einzelbeiträgen multipliziert mit ihren jeweiligen Gewichtungsfaktoren ist. Beispiel wäre das Mischen von unterschiedlichen Flüssigkeitsmengen mit unterschiedlichen Temperaturen. Die Temperatur der fertigen Mischung ergibt sich als Mittelwert, wobei die Temperaturen der Ingredienzen mit ihrer Menge gewichtet sind (Energiefreisetzung durch mögliche chemische Reaktionen nicht betrachtet).

                  Ergo: Priorität ist vielleicht nicht der optimale Begriff. Aber auf jeden Fall besser als Gewichtung.

                  So long,
                   Martin

                  --
                  Eifersucht ist so alt wie die Menschheit: Als Adam einmal spät heimkam, zählte Eva sofort seine Rippen.
                  1. eben, und genau deshalb halte ich den Ausdruck "Priorität" hier für richtiger.

                    Eine Priorität impliziert aber, dass irgendetwas "vor allen anderen" genommen wird - andere Faktoren fallen dabei völlig weg. Diese anderen Faktoren gibt es aber in CSS sehrwohl - eben die Reihenfolge oder die Art des Stylesheets.

                    Gewichtung bedeutet aber, dass mehrere Einflüsse unterschiedlich stark zu einem Gesamtergebnis beitragen, das Ergebnis also ein Mittelwert aus den Einzelbeiträgen multipliziert mit ihren jeweiligen Gewichtungsfaktoren ist.

                    Das trifft exakt auf die Regeln der Spezifität in CSS zu - hier gibt es unterschiedliche Gewichtungsfaktoren (eben unterschiedliche Bestandteile eines Selektors).

                    Ergo: Priorität ist vielleicht nicht der optimale Begriff. Aber auf jeden Fall besser als Gewichtung.

                    Darum ist der optimale Begriff auch Spezifität :)

                    1. Hi,

                      Eine Priorität impliziert aber, dass irgendetwas "vor allen anderen" genommen wird - andere Faktoren fallen dabei völlig weg. Diese anderen Faktoren gibt es aber in CSS sehrwohl - eben die Reihenfolge oder die Art des Stylesheets.

                      ja, aber diese anderen Faktoren fallen in der Bestimmung des Endergebnisses völlig weg. Das Ergebnis ist nur von EINEM Faktor abhängig - nämlich dem mit der höchsten Pri... ähm, Spezifizität.

                      Gewichtung bedeutet aber, dass mehrere Einflüsse unterschiedlich stark zu einem Gesamtergebnis beitragen, das Ergebnis also ein Mittelwert aus den Einzelbeiträgen multipliziert mit ihren jeweiligen Gewichtungsfaktoren ist.
                      Das trifft exakt auf die Regeln der Spezifität in CSS zu

                      Nein. Wenn mehrere, unterschiedlich spezifische Selektoren verschiedene Werte für padding angeben, gilt nicht etwa ein nach der Spezifizität der Beiträge gewichteter Mittelwert, sondern genau EINER der Einzelwerte - der mit der höchsten Spezifizität. Die anderen fallen dabei vollkommen aus der Wertung raus.

                      Ergo: Priorität ist vielleicht nicht der optimale Begriff. Aber auf jeden Fall besser als Gewichtung.
                      Darum ist der optimale Begriff auch Spezifität :)

                      Einverstanden.

                      So long,
                       Martin

                      --
                      Keine Sorge, wir finden für jede Lösung ein Problem.
                      1. Nein. Wenn mehrere, unterschiedlich spezifische Selektoren verschiedene Werte für padding angeben, gilt nicht etwa ein nach der Spezifizität der Beiträge gewichteter Mittelwert, sondern genau EINER der Einzelwerte - der mit der höchsten Spezifizität.

                        So war das mit der Gewichtung auch nicht gemeint - ich meinte das im Kontext "Das Recht des Stärkeren", wer lauter schreit hat das Sagen :)

                        Die anderen fallen dabei vollkommen aus der Wertung raus.

                        Aber auch die Reihenfolge ist ein Faktor - nur weil etwas die "höchste Spezifität" in einem Stylesheet hat, kann es problemlos in einem anderen (später angewandten) Stylesheet "überschrieben" werden.

          2. Erst einmal Vielen Dank für eure ganen Komentare... hab ein paar Sachen dazugelernt

            Wenn er die gesamte HTML-Datei Includiert wird natürlich auch der link auf die CSS-Datei bzw. das Inline CSS includiert und damit auch geladen

            Ja, das meinte ich

            Wenn die Pfade zu den CSS-Files relativ sind oder absolut zum Wurzelverzeichnis wird garnichts geladen, wenn es keine lokale Kopie gibt,

            sie werden geladen, was jetzt aber nicht am relativen oder absoluten pfad liegt, sondern eher daran, dass auf der seite die ich einbiden möchte die css definitionen direkt im head angegeben sind (und nicht in einer separaten css datei)... das hab ich aber selbst erst eben nachgeschaut

            War so gemeint, das er eine komplette HTML-Seite in eine Datei includiert in der sonst kein HTML steht

            ich hab nicht gesagt dass auf meiner seit sonst kein html steht... da steht eientlich sogar shr viel html... ist aber irrelevant, da ich ja das zwischen den body tags haben möchte

            Außerdem sagte er auch, das er eigendlich nur das haben möchte, was zwischen den body-Tags steht.
            Bitte richtig lesen!

            Die Anmerkung bezog sich auf die Variante mit include().

            OK

            ich hab übrigens jetzt auch nochmal nachgeschaut, im öffnenden body tag sind tatsächlich noch ein paar style definitionen mitgegeben. die müsste ich dann ja auch noch abfangen

            ich versuch mich jetzt mal an der umsetzung eurer tipps... vielen Dank für eure hilfe

            1. ich hab nicht gesagt dass auf meiner seit sonst kein html steht... da steht eientlich sogar shr viel html... ist aber irrelevant, da ich ja das zwischen den body tags haben möchte

              damit schnippelst du aber das CSS auch weg, das steht nämlich im head-Element.

              1. ich hab nicht gesagt dass auf meiner seit sonst kein html steht... da steht eientlich sogar shr viel html... ist aber irrelevant, da ich ja das zwischen den body tags haben möchte

                damit schnippelst du aber das CSS auch weg, das steht nämlich im head-Element.

                Das möchte er ja
                Er möchte nur sein eigenes CSS benutzen

                Mit freundlichen Grüßen

                Hunter 9999

              2. ich hab nicht gesagt dass auf meiner seit sonst kein html steht... da steht eientlich sogar shr viel html... ist aber irrelevant, da ich ja das zwischen den body tags haben möchte

                damit schnippelst du aber das CSS auch weg, das steht nämlich im head-Element.

                das ist kein problem... der teil, den ich auf meiner seite eingebunden haben möchte wrd (allem anschein nach) nicht mit den css definitionen im head gestyled

                ich hab den code jetzt soweit verfeinert

                <?php  
                $fp = fopen("http://www.handballkreis-mannheim.de/lm98/MaennerkrL.html","r");  
                if ($fp) {  
                while(!feof($fp)) {  
                $file= $file.fgets($fp);  
                }  
                if (preg_match("-<body BGCOLOR=#E8EFFF TEXT=#000000 ONLOAD="start()">(.*?)</body>-si", $file, $matches))  
                {$ausgabe = $matches[1];}  
                echo $ausgabe;  
                fclose($fp);  
                }  
                ?>
                

                hab den semikolon hinter dem preg_match entfernt... da lag schonmal fehler nummer 1
                der 2te fehler war dann dass der body direkt im tag gestyled wurde... hab die styledefinitionen hinzugefügt... jetzt schmeißt er mir nur noch nen fehler wegen den anführungszeichen bei ONLOAD="start()"
                wie kann ich die denn abfangen? Bin leider ziemlicher php anfänger Hab das jetzt soweit nur mit meinen sonstigen programmierkenntnissen, Google und eurer Hilfe hinbekommen

                wäre cool, wenn ihr mir das noch schnell sagen könntet, dann funktioniert der script

                1. if (preg_match('-<body BGCOLOR=#E8EFFF TEXT=#000000 ONLOAD="start()">(.*?)</body>-si', $file, $matches))

                  Mit freundlichen Grüßen

                  Hunter 9999

                  1. if (preg_match('-<body BGCOLOR=#E8EFFF TEXT=#000000 ONLOAD="start()">(.*?)</body>-si', $file, $matches))

                    ich fürchte nicht:
                    https://forum.selfhtml.org/?t=195150&m=1305963

                2. wäre cool, wenn ihr mir das noch schnell sagen könntet, dann funktioniert der script

                  preg_match erwartet einen PCRE, das hat mit PHP nicht viel zu tun - eher mit Perl und den Eigenheiten die PHP mitbringt, die sind aber hier nicht von belang.

                  Damit du beim Testen schneller bist, kann ich dir diesen Tester empfehlen: http://www.regex-tester.de/regex.html

                  Die Hochkommata sind insofern ein Problem, weil du sie als Stringbegrenzer verwendest. Ein weiteres Problem sind die Klammern, diese haben in einem Regulären Ausdruck eine Sonderbedeutung und müssen auch entsprechend escaped werden.

                  Aber eigentlich ist es einfacher, wenn du nach "<body" +  "optionale beliebe Kette (nicht speichern)" + ">" + "zu speichernde kette" + "</body>" suchst.

                  1. Aber eigentlich ist es einfacher, wenn du nach "<body" +  "optionale beliebe Kette (nicht speichern)" + ">" + "zu speichernde kette" + "</body>" suchst.

                    Ich denke diese Lösung ist mit sicherheit die schönste... Ich werd ma noch ein bisschen recherchieren

                    Vielen Dank für eure Hilfe

                    1. Aber eigentlich ist es einfacher, wenn du nach "<body" +  "optionale beliebe Kette (nicht speichern)" + ">" + "zu speichernde kette" + "</body>" suchst.

                      Ich denke diese Lösung ist mit sicherheit die schönste... Ich werd ma noch ein bisschen recherchieren

                      Als Tipp: "beliebige optionale Kette" kennst du bereits, nicht unwesentlich anders dazu ist "beliebige Kette". Das "nicht speichern" erledigt sich von ganz allein (bzw. kann, wenn man ein Untermuster - die Doku zur Sonderbedeutung der Klammern habe ich ja schon verlinkt - verwendet, unterdrückt werden - das Strichwort dazu ist "non-capturing subpattern").

                3. Mahlzeit Indemnis,

                  if (preg_match("-<body BGCOLOR=#E8EFFF TEXT=#000000 ONLOAD="start()">(.*?)</body>-si", $file, $matches))

                  der 2te fehler war dann dass der body direkt im tag gestyled wurde... hab die styledefinitionen hinzugefügt... jetzt schmeißt er mir nur noch nen fehler wegen den anführungszeichen bei ONLOAD="start()"

                  Du bist sicher, dass das eingebundene HTML-Dokument *IMMER* *GENAU SO* aussehen wird (einerseits immer genau diese Attribute mit genau diesen Werten und andererseits immer so unsauber und unschön)? Möchtest Du dort nicht lieber ein etwas allgemeineres Muster verwenden?

                  wie kann ich die denn abfangen? Bin leider ziemlicher php anfänger

                  Und Du bist auch sicher, dass Du Dich als Anfänger gleich mit so etwas herumschlagen willst, ohne offensichtlich wenigstens die Grundlagen der Stringver- und -bearbeitung verstanden zu haben?

                  wäre cool, wenn ihr mir das noch schnell sagen könntet, dann funktioniert der script

                  Ich wette, dass nicht.

                  MfG,
                  EKKi

                  --
                  sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                  1. Mahlzeit Indemnis,

                    if (preg_match("-<body BGCOLOR=#E8EFFF TEXT=#000000 ONLOAD="start()">(.*?)</body>-si", $file, $matches))

                    der 2te fehler war dann dass der body direkt im tag gestyled wurde... hab die styledefinitionen hinzugefügt... jetzt schmeißt er mir nur noch nen fehler wegen den anführungszeichen bei ONLOAD="start()"

                    Du bist sicher, dass das eingebundene HTML-Dokument *IMMER* *GENAU SO* aussehen wird (einerseits immer genau diese Attribute mit genau diesen Werten und andererseits immer so unsauber und unschön)? Möchtest Du dort nicht lieber ein etwas allgemeineres Muster verwenden?

                    Also n bisschen Hintergrundinfo. Das Dokument ist eine Handball-Liga-tabelle. Diese wird vom zuständigen Handballverband mit einem Tool generiert und hochgeladen. Dieses Tool generiert die seiten immer exacktgleich (abgesehen von den Mannswchaften, ergebnissen, etc) aber der Aufbau it immer exakt gleich

                    wäre cool, wenn ihr mir das noch schnell sagen könntet, dann funktioniert der script

                    habs ohne das ONLOAD="start()"> versucht und es funktioniert wenn also noch die anführungszeichen korrekt abgefangen werden läufts ohne probleme... korrigier mich wenn ich falsch liege

                    1. Mahlzeit Indemnis,

                      Diese wird vom zuständigen Handballverband mit einem Tool generiert und hochgeladen. Dieses Tool generiert die seiten immer exacktgleich (abgesehen von den Mannswchaften, ergebnissen, etc) aber der Aufbau it immer exakt gleich

                      ... solange dieser Handballverband das gleiche Tool benutzt. Ich wollte mit meiner Nachfrage nur bewirken, dass Du Dir dessen bewusst bist. Wenn Du dich seelisch darauf vorbereitest, Deinen Code ändern zu müssen, wenn der Verband sein Publizierungsverfahren ändert, ist ja alles in Ordnung. Ich wette aber ein halbes Schinken-Sandwich, dass Du - falls es einmal so weit ist - *genau diese eine Stelle* nicht auf die Schnelle finden, stundenlang fluchend am Code herumschrauben, dieses (und ggf. andere Foren) befragen und dann irgendwann die nächste Lösung mit beschränkter Halbwertszeit einbauen wirst.

                      Tu Dir selbst einen Gefallen: mach's gleich richtig.

                      habs ohne das ONLOAD="start()"> versucht und es funktioniert wenn also noch die anführungszeichen korrekt abgefangen werden läufts ohne probleme...

                      Ich hatte Dich bereits auf die Grundlagen der Stringverarbeitung (erweiterter Tipp: Escaping) hingewiesen ...

                      korrigier mich wenn ich falsch liege

                      Gerne (s.o.) ... :-)

                      MfG,
                      EKKi

                      --
                      sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  3. Mahlzeit Indemnis,

    if (preg_match("-<body>(.*?)</body>-si", $file, $matches));

    Abgesehen von Der Martins Anmerkungen und Nachfragen hätte ich da noch einen Hinweis:

    Bist Du sicher, dass in dem fremden HTML-Dokument das öffnende <body>-Tag auch genau so enthalten ist? Keine Attribute o.ä.?

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Bist Du sicher, dass in dem fremden HTML-Dokument das öffnende <body>-Tag auch genau so enthalten ist? Keine Attribute o.ä.?

      danke für den Hinweis... da lag einer meiner fehler ;)

  4. if (preg_match("-<body>(.*?)</body>-si", $file, $matches));

    Bis zu der Stelle mit dem preg_match() funktioniert auch alles wunderbar.

    Entgegen anderslautender Bekundungen fault einem kein Ei respektive keine Titte weg, wenn man Strings mit Stringfunktionen sucht (strpos) und Teilstrings entnimmt (substr).

    1. Entgegen anderslautender Bekundungen [...]

      Wer hat denn etwas anderes behauptet? :)

      1. Entgegen anderslautender Bekundungen [...]

        Wer hat denn etwas anderes behauptet? :)

        Keine Ahnung, aber irgendwer muß es gewesen sein.