Ankündigung

Einklappen
Keine Ankündigung bisher.

Html Texte auslesen und bestimmt Teile ausgeben

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Html Texte auslesen und bestimmt Teile ausgeben

    Hallo,

    ich möchte gerne auf einer HTML-Seite einen bestimmten Bereich in einem Text einlesen und per echo anzeigen lassen. Dazu habe ich folgenen Code:
    PHP-Code:
    <?php
    $url
    ='http://www.meineseite.de/Beispiel';
    $seite=implode("\n",file($url)); 

    $suchen='Start';
    $pos=strpos($seite,$suchen); 
    $pos=$pos+strlen($suchen); 

    $seite=substr($seite,$pos); 

    $suchen='Ende';
    $pos=strpos($seite,$suchen); 
    $seite=substr($seite,0,$pos); 

    echo 
    $seite;

    ?>
    Alles was zwischen Start und Ende steht soll ausgegeben werden.
    Mit obigen Code klappt das auch, aber leider nur bei dem ersten Suchtreffer. Ich möchte aber das die gesamte Seite danach gesucht wird und alle Ergebniss untereinander anzeigt werden. Also demnach eine Schleife in den Code einbinden. Leider weiß ich nicht wie. Könnte jemand diesbezüglich den Code anpassen ? Wäre super und danke schon mal im voraus.

    Gruss Markus


  • #2
    Hi,
    das ganze sollte meiner Meinung mit [MAN]preg_match_all[/MAN] viel einfacher sein.
    Versuch mal diesen Code hier:

    PHP-Code:
    <?
    $url = 'http://www.php.de/php-einsteiger/66504-html-texte-auslesen-und-bestimmt-teile-ausgeben.html'; # :)

    $data = file_get_contents($url);
    preg_match_all("/Start(.*)Ende/Us", $data, $array, PREG_SET_ORDER);
    print_r($array);

    ?>
    EDIT: Hab ihn mal getestet gibt folgendes aus sollte funktionieren
    Code:
    Array
    (
        [0] => Array
            (
                [0] => Start'</span>...gekürtzt...<span style="color: #DD0000">'Ende
                [1] => '</span>...gekürtzt...<span style="color: #DD0000">'
            )
    
        [1] => Array
            (
                [0] => Start</font> und <font color="Red">Ende
                [1] => </font> und <font color="Red">
            )
    
        [2] => Array
            (
                [0] => Start(.*)Ende
                [1] => (.*)
            )
    
    )
    Ausgeben tust du das ganze dann mit einer Schleife:
    PHP-Code:
    foreach($array as $match) {
      echo 
    $match[1]."<br>";

    Kommentar


    • #3
      Danke erstmal für die Antwort. Habe den Code von dir übernommen.
      Das Ergebnis ist leider nur:

      Array ( )

      Gruss Markus

      Kommentar


      • #4
        Gibts nicht habe ich gerade getestet (siehe oben)

        EDIT: überprüfe bitte mal ob fopen() in php_info() auf "on" ist.

        Kommentar


        • #5
          sorry, du hast Recht. Ich war zu gierig und habe deinen Code direkt auf einer Seite von mir angewand die mit tausenden von Texten,Grafiken usw... voll gepackt war. Ich habe dann zum testen mal eine kleinere Test-HTML erzeugt und den Code angwandt. Klappt super.
          Nun habe ich aber ein anderes Problem. Ich würde doch nicht nach den Text suchen lassen, sondern eher nach HTML-Codes. Zum Beispiel danach:

          Anfang: "><td>&nbsp;</td><td>
          Ende: </td><td>BAL

          Also wieder das gleiche, alles was zwischen "><td>&nbsp;</td><td> und </td><td>BAL steht wieder ausgeben.

          in deinem Code kann ich die gesuchten Codes nicht einfach durch "/Start(.*)Ende/Us" ersetzen. Mein Suchwerte haben ja auch "/& usw. drin. Wie kann ich in deinem Code solche HTML-Tags einbinden zum suchen ?

          Danke aber schon mal für deinen ersten Code. Gruss Markus

          Kommentar


          • #6
            Hi
            PHP-Code:
            '/"><td>&nbsp;<\/td><td>(.*)<\/td><td>BAL/Us' 
            REGEX TESTER - Regular Expressions - Regulärer Ausdrücke online testen

            Kommentar


            • #7
              Sitze zum lernen jetzt auch an REGEX fest.
              Ich hab eine .html mit einer Tabelle, und möchte da alle Links raussuchen.

              PHP-Code:
              <?php

              $url 
              'liste1.txt'# :)
              $data file_get_contents($url);
              preg_match_all('/ID=(.*)<\/a><\/td><td>/Us'$data$arrayPREG_SET_ORDER);

              foreach(
              $array as $match) {
                echo 
              $match[1]."<br>";

              ?>
              Das klappt jetzt auch wunderbar, problem ist jetzt, dass an jedem match noch 7 Zeichen hängen, die weg sollen. Mit strpos kann ich ja nicht arbeiten, da kein string sondern ein Array, aber wie kann ich das sonst löschen?

              Kommentar


              • #8
                Hi
                jedem match noch 7 Zeichen hängen
                Ich weiß nicht wie die 7 Zeichen aussehen aber machs doch auch mit preg_match_all?
                PHP-Code:
                '/ID=(.*).{7}<\/a><\/td><td>/Us' 
                Mit strpos kann ich ja nicht arbeiten, da kein string sondern ein Array...
                Verstehe ich nicht was du meinst.

                Wenn am schluss von jeden match 7 Zeichen sind die du nicht haben willst dann mach doch einfach:
                PHP-Code:
                foreach($array as $match) {
                  echo 
                substr($match[1], 0, -7)."<br>";

                EDIT:
                Der Modifer "s" ist eigentlich unötig bei deinem code.

                Kommentar


                • #9
                  Danke, klappt super.

                  Noch ne kurze Frage: bei der seite die ich auslese, sind auch Umlaute, die werden auf meiner neuen Seite leider nicht richtig angezeigt. Was muss ich im Code einfügen damit ÜÄÖ richtig angezeigt werden.

                  Danke im voraus, Markus

                  Kommentar


                  • #10
                    Das Thema wurde bereits hinreichend behandelt. Bitte benutze die Forensuche und beachte diesen Thread!

                    [MOD: Thread geschlossen]
                    --

                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                    --

                    Kommentar

                    Lädt...
                    X