Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit PHP Simple HTML DOM Parser

Einklappen

Neue Werbung 2019

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

  • Problem mit PHP Simple HTML DOM Parser

    Hallo, habe folgendes Problem,
    ich möchte ein HTML File parsen und zwar möchte ich jeden INNERTEXT (content) im Body eines HTML Tags ermitteln.

    Bsp HTML File:
    Code:
    <html>
     <head><titel>Test</titel></head>
     <body>
      <b>das ist ein Test
       <i>blabla
        <a href="http://www.google.de">Link1</a>
        </i>
      </b>
      <a href="http://www.web.de">Link2</a>
      <br>
      <p>test</p>
     </body>
    </html>
    meine erwartete Ausgabe für mein PHP Script ist:

    * das ist ein Test
    * blabla
    * Link1
    * Link2
    * test


    Das ganze versuche ich so zu realisieren:
    ich möchte einfach alle Tags beliebig tief durch iterieren

    PHP-Code:
    $html str_get_html('html file');

    foreach(
    $html->find('body') as $element)
    {
     
    $result $element;
    }

    foreach(
    $result->children() as $innerElement)
    {
     if(
    $innerElement->innertext) echo htmlentities($innerElement->innertext)."<br>";
     if(
    $innerElement->children())
     {
      
    // noch keine logik drin
     
    }


    Der Code funktioniert nur in erster Ebene, wie könnte ich nun das Problem mit der verschachtelung lösen?
    ich stehe gerade ein bischen auf dem schlauch...
    bekomme da gerade auch kein rekursiven Algorithmus hin.

    Aber vielleicht hat jemand ne Idee oder es gibt ne einfachere Möglichkeit mit PHP Simple HTML DOM Parser.

    Hier ist die API Beschreibung von PHP Simple HTML DOM Parser -> PHP Simple HTML DOM Parser

    Vielen Dank.
    berryone


  • #2
    Hallo, versuch es mit Rekursion.

    Pseudocode:
    Code:
    function getText(element) {
      if (hasChildren) {
        return getText(getChildren)
      } else {
        return innerText
      }
    }
    "Mein Name ist Lohse, ich kaufe hier ein."

    Kommentar


    • #3
      Du schreibst dir eine Funktion, der ein Element-Objekt übergeben wird. Darin gibst du das jeweilge InnerHTML aus und rufst in einer Schleife durch alle Kind-Elemente die selbe Funktion wieder auf (nur diesmal logischerweise mit dem jeweiligen Kind-Element als Argument). Dann brauchst du die Rekursion nur noch durch Aufrufen der Methode mit dem body-Element als Argument zu starten. Fertig.

      Kommentar

      Lädt...
      X