racer: Text zwischen HTML-Tags auslesen

Hallo Leute,
hoffe es kann mir hier jemand helfen. Ich möchte aus einer HTML-Seite einen Text zwischen zwei Tags auslesen oder rausschneiden und in eine andere Seite einfügen. Mein Problem ist ich weiß nicht wie, habe schon tagelang im Internet nach ner Lösung gesucht aber bis jetzt noch keine gefunden. Der Start-Tag ist eine Sprungadresse in der HTML-Seite die wie folgt aussieht: <a id="c980"> und das Ende-Tag soll wie folgt aussehen: <a id="c750">. Den Text zwischen den zwei Tag hätte ich gern ausgelesen. Hab schon einiges über HTML_Parser gelesen, damit soll es angeblich funktionieren aber keine Ahnung wie. Ich weiß nicht wo ich den Tag eintragen muss.

Vielen Dank schon mal im vorraus für eure Hilfe.

Gruß

  1. <a id="c980"> und das Ende-Tag soll wie folgt aussehen: <a id="c750">.

    Geraten: du willst also aus einer TYPO3-Seite einzelne Inhaltselemente auslesen. Da gibts einfachere Methoden.

  2. h1,

    hoffe es kann mir hier jemand helfen. Ich möchte aus einer HTML-Seite einen Text zwischen zwei Tags auslesen

    use HTML::TagParser;

  3. Mal ohne Reguläre Expressions:

      
    my $cut;  
    my $startword = 'START';  
    my $endword = 'ENDE';  
      
    my $start = index($text, $startword );  
    my $end = index($text, $endword );  
      
    if( $end > $start and $start >= 0){  
       $cut = substr(  
           $text,  
           $start + length($start),  
           $end - ( $start + length($start)  
        );  
    }  
    
    

    mfg Beat

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    Der Valigator leibt diese Fische
  4. Hi racer,

    Mein Problem ist ich weiß nicht wie, habe schon tagelang im Internet nach ner Lösung gesucht aber bis jetzt noch keine gefunden.

    Tagelang gesucht und nicht das CPAN gefunden? Das sollte man als Perl Programmierer kennen. Dann setzte deine suche mal hier weiter.

    MfG
    Otto

  5. Und mal mit regulären Ausdrücken. (Eigentlich kann man sie in wenigen Stunden beherrschen lernen.

    Der HTML Quelltext sei in $html gespeichert.

    $html =~ /<a id="c980">(.*)<a id="c750">/;
    $result = $1;

    2 Zeilen finde ich besser, als ein Modul.

    Gruß,
    Cruz

    1. Moin Moin!

      $html =~ /<a id="c980">(.*)<a id="c750">/;
      $result = $1;

      Wozu zwei Zeilen, wenn es auch eine tut?

        
      ($result)=$html=~/<a id="c980">(.*)<a id="c750">/;  
      
      

      2 Zeilen finde ich besser, als ein Modul.

      Wenn sie das Problem vollständig lösen würden, ja.

      Das tun sie aber nicht. Deine RE funktioniert nur, wenn das HTML nicht nur valide, sondern auch in einer ganz bestimmten Weise formatiert ist. Nur ein HTML-Parser kann HTML (inklusive den SGML-Sonderfällen) wirklich verarbeiten, alles andere ist Pfusch.

      Für Beats Ansatz ohne REs gilt übrigens exakt das selbe.

      Alexander

      --
      Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
      1. Das tun sie aber nicht. Deine RE funktioniert nur, wenn das HTML nicht nur valide, sondern auch in einer ganz bestimmten Weise formatiert ist.

        Jaja schon klar, aber muss ja nicht immer mit Kanonen auf Spatzen schießen. Die Frage war nicht nach einem generischen HTML Parser, der beliebige Tags extrahieren kann. Der OP wollte lediglich den Text zwischen <a id="c980"> und <a id="c750"> haben und das kann man ruhig erstmal einfach lösen. Ich glaube dem OP ist ohnehin ersmtal mehr geholfen, wenn er lernt einfaches Werkzeug zu bedienen und zu verstehen wie Dinge funktionieren. Wenn er erstmal das Problem der geschachtelten Tags entdeckt, dann kann er sich ja nach einem Modul umsehen.

        Cruz