Noob: HTML Seite mit PHP durchsuchen (NOOB!)

Hi!

Ich probiere grade mir php ein wenig beizubringen um etwas zu realisieren und zwar:
Ich möchte gerne eine HTML Seite durchsuchen und dann den 3. <p> block ausgeben lassen.
1. Frage: Geht das mit php (Ich denke mal schon...)
2. Frage: Ist das etwa ein Ansatz:

<?php
$HTML = file_get_contents("/test/test.html");
$arr = explode('|', $HTML);
foreach($arr as $elem)
 {
     if(strlen($elem) > 0 && 0===strpos($elem, '<p>'))
         echo $elem, "<br />n";
 }
?>

  1. Hallo!

    Ich möchte gerne eine HTML Seite durchsuchen und dann den 3. <p> block ausgeben lassen.

    1. Frage: Geht das mit php (Ich denke mal schon...)
    2. Frage: Ist das etwa ein Ansatz:
      <?php
      $HTML = file_get_contents("/test/test.html");
      $arr = explode('|', $HTML);
      foreach($arr as $elem)
      {
           if(strlen($elem) > 0 && 0===strpos($elem, '<p>'))
               echo $elem, "<br />n";
      }
      ?>

    Das liefert meines erachtens nichts brauchbares, außer der 3. <p> Block steht genau zwischen zwei Pipe Zeichen.
    Was soll das explode mit dem Pipe Zeichen bewirken?

    mfg
      frafu

  2. Hallo Freunde des gehobenen Forumsgenusses,

    Ich probiere grade mir php ein wenig beizubringen um etwas zu realisieren und zwar:
    Ich möchte gerne eine HTML Seite durchsuchen und dann den 3. <p> block ausgeben lassen.

    1. Frage: Geht das mit php (Ich denke mal schon...)

    Ja, das geht.

    1. Frage: Ist das etwa ein Ansatz:

    <?php

    $HTML = file_get_contents("/test/test.html");
    $arr = explode('|', $HTML);

      
    Warum trennst du den HTML-Code am |?  
      
    
    > ~~~php
    
    foreach($arr as $elem)  
    
    >  {  
    >      if(strlen($elem) > 0 && 0===strpos($elem, '<p>'))  
    >          echo $elem, "<br />n";  
    >  }
    
    

    Was hat das | mit Paragraphen in HTML zu tun?

    Gruß
    Alexander Brock

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
      1. Frage: Ist das etwa ein Ansatz:

      <?php

      $HTML = file_get_contents("/test/test.html");
      $arr = explode('|', $HTML);

      
      >   
      > Warum trennst du den HTML-Code am |?  
        
      Hatte daas mal so als Beispiel nach etwas erfolglosen googeln...  
      Klar ist | nicht das richtige, aber wo mit sollte man das denn trennen?
      
      1. echo $begrüßung;

        Warum trennst du den HTML-Code am |?

        Klar ist | nicht das richtige, aber wo mit sollte man das denn trennen?

        Gar nicht. Es gibt keine Vorschrift, dass zwischen HTML-Tags Trennzeichen sein müssen.
        Behandle die gesamte Datei als einen fortlaufenden String.

        echo "$verabschiedung $name";

        1. n'abend,

          Klar ist | nicht das richtige, aber wo mit sollte man das denn trennen?

          Gar nicht. Es gibt keine Vorschrift, dass zwischen HTML-Tags Trennzeichen sein müssen.
          Behandle die gesamte Datei als einen fortlaufenden String.

          "gar nicht." und das trifft es wirklich auf den punkt.

          ein paragraph <p> ... </p> wird in den seltensten fällen in nur einer einzigen zeile stehen... wenn du die html-datei in zeilen splittest (dir also ein array aufbaust) machst du dir nur unnötig arbeit.

          du willst wahrscheinlich mit RegEx rumspielen... die php funktion preg_match() wird dir dabei unweigerlich über den weg laufen. (vergiss nicht, dass dein dein string über mehrere zeilen verteilt sein kann, also den multiline parameter setzen...)

          weiterhin schönen abend...

          --
          wer braucht schon großbuchstaben?
  3. Hallo,

    wie wäre es damit, von hinten anzufangen?

    <?php
    $HTML = file_get_contents("/test/test.html");

    $arr = explode('</p>', $HTML);

    Nun musst Du nur für jedes Array-Element prüfen, ob '</p>' tatsächlich enthalten ist und dann von hinten nach dem '<p' suchen. Grob betrachtet funktioniert das schon. Allerdings könnten sowohl das '</p>', als auch das '<p' in irgendeinem Kontext innerhalb des HTML auftreten, ein dem sie überhaupt keinen Tag bedeuten. Es gibt da Spezialfälle...

    LG
    Chris

    1. Hallo,

      ...ach, und außerdem muss ein <p> nicht durch ein </p> abgeschlossen sein. Das hängt eben auch noch vom Doc-Type ab.

      LG
      Chris