Teile aus html datei extrahieren

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Teile aus html datei extrahieren

    Hallo,

    ich habe eine html datei aus der ich Teile ( Überschrift und Text )
    extrahieren möchte.

    Hier die Dateistruktur:
    -----------------------------------------------------------------------------------------

    ... width="52%">
    <P
    style="MARGIN-TOP: 0.13cm; MARGIN-BOTTOM: 0.11cm"
    align=left><B>Überschrift</B></P>
    <P style="MARGIN-TOP: 0.13cm; MARGIN-BOTTOM: 0.11cm"
    align=left>Text
    text text text text text text text text text text text text</P></TD></TR>
    <TR vAlign=top>
    <TD width="48%">
    <P
    style="MARGIN-TOP: 0.13cm; MARGIN-BOTTOM: 0.11cm"
    align=left><B>Überschrift</B>
    </P>
    <P style="MARGIN-TOP: 0.13cm; MARGIN-BOTTOM: 0.11cm"
    align=left>text text text text text text text text</P></TD>
    <TD width="52% ...

    -----------------------------------------------------------------------------------------

    Die Überschriften filtere ich bereits erfolgreich heraus:

    preg_match("/(.*)\<b\>(.*)\<\/b\>(.*)/i", $alle_zeilen[$i], $treffer);

    Alles zwischen <b> und </b> wird als Überschrift erkannt. Nur
    wie mache ich das mit dem Text? Vielleicht hat jemand einen Tip.

    Danke!

  • #2
    mach doch den Text in einen Span mit einer Klasse und filtere dann alles raus, was zwischen <span class="willichhaben"> und </span> steht
    it's not a bug,
    it's a feature!

    Kommentar


    • #3
      Nur wie mache ich das mit dem Text?
      Ohne zu wissen nach welchen Kriterien du Text definierst würde ich mal sagen auch mittels eines RegExp.
      Steht denn der Text zwischen bestimmten Tags ? Ah sehe gerade, dass der Text vermutlich zwischen <p> und </p> steht.
      Also würde ich mal folgendes probieren
      PHP-Code:
      $reg '/<p.*>(.*)<\\\/p>/iUs'
      und analog würde ich das auch für die Überschriften machen.
      Gruss

      tobi

      p.s. du weisst schon, dass Überschriften in h-Tags besser aufgehoben wären ? Es könnte auch einfacher sein wenn du die Überschriften ausserhalb der Absätze schreiben würdest. Ansonsten machted du mit dem Text auch Überschriften...
      EDIT:

      Gerade noch bei selfhtml vorbei geschaut: Innerhalb von p dürfen nur inline Elemente vorkommen und h ist imho ein Blockelement --> die Titel müssten aus dem Absatz raus

      Zuletzt geändert von jahlives; 07.02.2007, 11:04.
      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

      Kommentar


      • #4
        zu Antwort 1.)
        Der Ansatz mit span ist zwar gut, aber so nicht zu machen.
        Es handelt sich um mehrere html dateien mit irsinnig vielen
        Einträgen. Und sollte das automatisiert gemacht werden sollen,
        stehe ich vor dem gleichen Prblem wie jetzt auch. Wie erkenne
        ich den Text?

        zu Antwort 2.)
        Wenn ich den Teil zwischen <p suche, finde ich auch die Überschriften.
        Woran erkenne ich nur den Text, bzw. wie filtere ich den heraus?

        Kommentar


        • #5
          Wenn ich den Teil zwischen <p suche, finde ich auch die Überschriften.
          überschriften gehören in <h1>.

          gruß
          peter
          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
          Meine Seite

          Kommentar


          • #6
            Quick and dirty:
            Erst die Titel matchen, dann den Text. Danach bei jedem Treffer in Text alles zwischen <b> und </b> mit Leerstring ersetzen. Aber wie bereits gesagt gehören Titel nicht in einen Absatz und wenn das sauberes HTML wäre, dann hättest du dieses Problem gar nicht.

            Gruss

            tobi
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              Hallo peter,

              nochmal zum Verständnis. Es handelt sich um sehr viele html dateien,
              die ich im übrigen auch nicht verfasse. Ich möchte diese lediglich wie
              in meiner frage beschrieben in überschirft und text aufteilen.

              das mit dem <p trifft aber auch auf den text zu.
              um html geht es hier nicht!

              Hallo Tobi,

              der Ansatz ist nicht schlecht. Leider ist es aber so, daß es auch
              überschriften gibt, in den die <b> Tags zweimal auftauchen.
              Z.B. so <b>Überschrift</b> irgendwas <b>Überschrift</b>
              und dann folgt erst der Text.

              Es geht hier nicht um falsche oder ichtige html syntax(php-Forum)!!
              Wie erhalte ich die Überschrift und den Text.

              Kommentar


              • #8
                Also titel werden grundsätzlich durch Tags (eigentlich nur h) definiert --> alles was ausserhalb der Tags steht ist somit kein Titel. Woher zum Henker soll ein RegExp wissen dass
                so <b>Überschrift</b> irgendwas <b>Überschrift</b>
                irgendwas EIN Titel ist. Steht ja ausserhalb deiner Titeltags. Ich würde mal sagen, dass es ohne eine vernünftige HTML Struktur und ohne vernünftige Verwendung von HTML Tags schwer bis fast unmöglich sein sollte, das mittels RegExp zuverlässig zu lösen.

                Gruss

                tobi
                Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                Kommentar


                • #9
                  Ich war davon ausgegangen, daß es sich hier um ein php forum handelt.
                  ich weiß nicht wie ich die Aufgabe, die ich zu lösen habe, besser beschreiben soll.

                  Wenn ich diese mehrere hundert html erzeugt hätte, hätten Sie evtl.
                  anders ausgesehen. Und diese dateien alle zu ändern würde einen
                  erheblichen! arbeitsaufwand erzeugen. Zumal sich in den dateien ca.
                  150 einträge (Überschrift / Text) befinden.

                  Ich werde wohl in einem anderen "php Forum" nachfragen.

                  Kommentar


                  • #10
                    Ich werde wohl in einem anderen "php Forum" nachfragen.
                    Mach das, aber ich kann mir beim besten Willen nicht vorstellen wie dir in einem anderen Forum eine zuverlässige Möglichkeit gegeben werden könnte. Nicht mit dieser falschen Struktur und Verwendung falscher HTML Tags !

                    Gruss

                    tobi
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar

                    Lädt...
                    X