Sanne: Text zwischen 2 Tags auslesen

Hallo,
ich möchte den Inhalt zwischen 2 Tags auslesen und ausgeben.
Bsp.:
<tag1>das ist der Text</tag1>

Da es sich nicht um HTML Tags handelt befürchte ich, dass das nur mit Regulären Ausdrücken funktioniert, von denen ich leider überhaupt keine Ahnung habe.

Vielleicht täusche ich mich auch. Gibt es evtl. doch eine andere Lösung, bzw. kennt jemand eine Quelle im Netz mit einem Bsp. das passen würde.

Danke
Sanne

  1. Hallo Sanne.

    ich möchte den Inhalt zwischen 2 Tags auslesen und ausgeben.
    Bsp.:
    <tag1>das ist der Text</tag1>

    Da es sich nicht um HTML Tags handelt befürchte ich, dass das nur mit Regulären Ausdrücken funktioniert, von denen ich leider überhaupt keine Ahnung habe.

    Nein, die sind nicht erforderlich. Alles was du brauchst, sind die beiden Stringfunktionen strpos und substr.

    Das Vorgehen: hole dir als erstes die Position, an der „<tag1>“ in der gesamten Zeichenkette auftritt und merke dir diese. Nun suchst du, ausgehend von eben ermittelter Position nach „</tag1>“ und merkst dir auch dies.

    Abschließend verwendest du die beiden ermittelten Positionen für die substr-Funktion. Die Länge des Teilstrings kannst du mit Hilfe der beiden Positionen selbst ermitteln.

    Einen schönen Sonntag noch.

    Gruß, Ashura

    --
    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
    „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
    [HTML Design Constraints: Logical Markup]
    1. Nein, die sind nicht erforderlich. Alles was du brauchst, sind die beiden Stringfunktionen strpos

      Danke für den Tipp!

      Unter dem Link strpos ist eine Funktion, die anscheinend Text zwischen Tags auslesen soll. Leider bekomme ich keine Anzeige.
      Habe ich die Funktion falsch eingebunden?

      <?php
      function parsing($tag,$string) {
             $start=strpos($string,"<" . $tag . ">" );
             $start=$start + strlen("<" . $tag . ">");
               $end=(strpos($string, "</" . $tag . ">"));
               $num=  ($end - $start);
               $valore=substr($string,$start,$num);
               echo "$valore"; // Im Original return
      }

      /* so versuche ich die Funtkion aufzurufen */
      $fp = "test.xml";
      if ($datei = fopen($fp, "r"));{
       while (!feof($datei)) {
        $string = fgets($datei);
        }
      }
      $tag = "<Date>";
      parsing($tag,$string);
      ?>

      1. Hallo Sanne.

        Habe ich die Funktion falsch eingebunden?

        <?php

        function parsing($tag,$string) {
               $start=strpos($string,"<" . $tag . ">" );
               $start=$start + strlen("<" . $tag . ">");
                 $end=(strpos($string, "</" . $tag . ">"));
                 $num=  ($end - $start);
                 $valore=substr($string,$start,$num);
                 echo "$valore"; // Im Original return
        }

          
        Die Funktion ist soweit in Ordnung, auch wenn du zur Ermittlung von $end der strpos-Funktion noch $start als dritten Parameter übergeben solltest. Ansonsten sucht dir strpos immer nur das allererste schließende Tag.  
          
        
        > ~~~php
        
        /* so versuche ich die Funtkion aufzurufen */  
        
        > $fp = "test.xml";  
        > if ($datei = fopen($fp, "r"));{  
        >  while (!feof($datei)) {  
        >   $string = fgets($datei);  
        >   }  
        > }  
        > $tag = "<Date>";  
        > parsing($tag,$string);  
        > ?>
        
        

        Der erste Parameter darf deiner eigenen Funktion nach nur der Elementname sein; hier entsteht intern also „<<Date>>“. Dass dies nie gefunden werden kann, verwundert weniger.

        Offenbar möchtest du ein XML-Dokument verarbeiten. Dafür normale Dateifunktionen zu verwenden ist nicht sonderlich geeignet, wenn auch als Fallback ausreichend.

        Du solltest dich mit den PHP-eigenen Möglichkeiten zur Interaktion mit XML-Dokumenten befassen. Für den Anfang dürfte hierbei simplexml genügen, für mehr Kontrolle empfehle ich die DOM-Funktionen.

        Einen schönen Sonntag noch.

        Gruß, Ashura

        --
        sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
        „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
        [HTML Design Constraints: Logical Markup]
        1. Was soll $start für ein Wert sein?
          Ich habe es auch schon mit "Date" versucht, erhalte trotzdem keine Ausgabe.

          Leider verwende ich PHP 4.3, deshalb kann ich wohl die XMl Funktion nicht verwenden.

          Sorry...bin Anfägerin

          Gruß
          Sanna

          1. Hallo Sanna.

            Was soll $start für ein Wert sein?

            Einer den du selbst erschaffen hast. Kennst du deine eigene Funktion nicht?

            Ich habe es auch schon mit "Date" versucht, erhalte trotzdem keine Ausgabe.

            Dann verwende an Stelle des XML-Dokumentes bitte einmal eine ganz einfache Zeichenkette als zweiten Parameter für deine Funktion:

            <?php  
              
            $str_test = '<foo>BAR</foo>';  
              
            parsing('foo', $str_test);  
              
            ?>
            

            Leider verwende ich PHP 4.3, deshalb kann ich wohl die XMl Funktion nicht verwenden.

            Das mag für simplexml zutreffend sein, aber nicht für die DOM-Funktionen.
            Befasse dich ruhig einmal damit. Du wirst begeistert sein, wie viel man damit bewerkstelligen kann. Die einzige XML-optimierte Alternative wären dann noch die XML-Parser-Funktionen, aber diese halte ich persönlich für viel zu umständlich.

            Sorry...bin Anfägerin

            Und was möchtest du mir damit sagen?

            Einen schönen Montag noch.

            Gruß, Ashura

            --
            sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
            „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
            [HTML Design Constraints: Logical Markup]