Steffi: Datei teilen _nach_ <BODY ..... >

Hallo,

ich wage es mal, hier als Frau eine Frage stellen... :-)

Ich habe schon alle String-Funktionen bei SelfPHP durch, aber nichts gefunden...

Ich lese so eine Datei in eine Variable:

$fp = fopen ($datei, "r");
$str = fread ($fp, filesize ($datei));
fclose ($fp);
$daten = $str;

Jetzt muss ich die Variable "daten" in zwei Variablen teilen:

Der erste Teil soll folgendes beinhalten:

<HTML>
<HEAD>
.
.
<BODY [unterschiedliche Daten] >

Der zweite Teile soll den Rest enthalten.

Das Problem ist, dass <BODY ..... > in dem ersten Teil sein soll, und ich keine Markierungen (Kennzeichnung durch Kommmentare) in den Dateien einfügen kann. Mit Markierungen wäre das ja kein Problem.

Könnte mir da jemand helfen?

Danke!

Steffi

  1. Hi,

    Das Problem ist, dass <BODY ..... > in dem ersten Teil sein soll,

    ich sehe kein Problem. Der erste Teil endet nach dem ersten ">" nach "<BODY".

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hello,

      Hi,

      Das Problem ist, dass <BODY ..... > in dem ersten Teil sein soll,

      ich sehe kein Problem. Der erste Teil endet nach dem ersten ">" nach "<BODY".

      und dazu passt dann http://de3.php.net/manual/en/function.strpos.php

      Suchen musst Du sicher nach "<body " in strtolower($dateiinhalt) und Dir die Position merken. und dann suchst Du nach ">" ab der gemerkten Position, so wie Cheatah das schon beschreiben hat.

      Außerdem solltest Du vielleicht noch die Anzahl der Vorkommen von "<body " zählen lassen. Es muss ja genau eins sein. Aber sicher ist sicher.

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
      1. So könnte ich nach zwei Durchläufen die Position des richtigen ">" rausfinden.
        Nur wie teile ich das jetzt? Mit split oder explode kann ich keinen "Startwert" für die Suche festlegen.

        Steffi

        1. Hello,

          So könnte ich nach zwei Durchläufen die Position des richtigen ">" rausfinden.
          Nur wie teile ich das jetzt? Mit split oder explode kann ich keinen "Startwert" für die Suche festlegen.

          http://de3.php.net/manual/en/function.substr.php

          Schau Dir die anderen Stringfunktionen auch mal an.

          Harzliche Grüße aus http://www.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau
          1. Danke!

            Hier meine Lösung...

            $suche  = '<body';
            $pos = strpos(strtolower($daten), $suche);

            $suche  = '>';
            $trenn = strpos(strtolower($daten), $suche, $pos);
            $trenn++;
            $head = substr($daten, 0, $trenn);

            Danke für die Hilfe

            1. Hello,

              Danke für Deine Rückmeldung. Das vergessen leider die meisten.

              Hier meine Lösung...

              $suche  = '<body';
              $pos = strpos(strtolower($daten), $suche);

              $suche  = '>';
              $trenn = strpos(strtolower($daten), $suche, $pos);
              $trenn++;
              $head = substr($daten, 0, $trenn);

              Harzliche Grüße aus http://www.annerschbarrich.de

              Tom

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
              Nur selber lernen macht schlau
    2. Hi,

      Das Problem ist, dass <BODY ..... > in dem ersten Teil sein soll,
      ich sehe kein Problem. Der erste Teil endet nach dem ersten ">" nach "<BODY".

      <body title="guck mal da ->">

      SCNR ;-)

      cu,
      Andreas

      --
      MudGuard? Siehe http://www.Mud-Guard.de/
      Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
      1. Hello,

        Das Problem ist, dass <BODY ..... > in dem ersten Teil sein soll,
        ich sehe kein Problem. Der erste Teil endet nach dem ersten ">" nach "<BODY".

        <body title="guck mal da ->">

        SCNR ;-)

        Und das von DIR? *gg*

        <body title="guck mal diesen coolen body da --&gt;">

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. Hi,

          <body title="guck mal da ->">
          SCNR ;-)
          Und das von DIR? *gg*

          Ja, warum nicht?
          Es gibt keinen Grund, das > hier als Entity zu schreiben.

          cu,
          Andreas

          --
          MudGuard? Siehe http://www.Mud-Guard.de/
          Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    3. Ja so ähnlich hatte ich mir das auch gedacht.

      Zwei mal mit "strstr($text,$daten)" durchgehen, 1. Mal mit $text="<BODY" das zwei Mal mit $text=">". Dann bekommt ich als Ausgabe alles nach dem (inklusive) ">" zurück. Aber den ersten Teil habe ich damit noch nicht, und der ist eigentlich der wichtige Teil.

      Wenn ich das "umdrehe" mittels "strrev", habe ich noch das "<BODY" drin (nach nochmaligen "strrev")...

      Steffi

      1. Hi,

        Zwei mal mit "strstr($text,$daten)" durchgehen, 1. Mal mit $text="<BODY" das zwei Mal mit $text=">". Dann bekommt ich als Ausgabe alles nach dem (inklusive) ">" zurück.

        Du musst zunächst die Position ermitteln. Anschließend nutzt Du diese, um zwei Teilstrings zu extrahieren.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes