preg_split()

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

  • preg_split()

    Hallo,

    In einem Text kommen immer wieder Pattern mit folgender Struktur vor: <DOC DID=xx TID=yy>zz</DOC>

    Aus diesem Text möchte ich nun alle xx, yy und zz auslesen und in einem Array speichern.
    Wenn möglich sollte der Array die Form
    PHP-Code:
    Array
    (
        [
    0] => Array
            (
                [
    0] => xx
                
    [1] => yy
                
    [2] => zz
            
    )
        [
    1] ......

    haben (eigentlich würde es schon genügen wenn einfach alle Werte in einem normalen Array gespeichert wären...aber so wär halt optimal)

    Nun, leider bin ich nicht so der Profi was reguläre Ausdrücke angeht. Ich hab versucht das ganze mit preg_split() zu realisieren, was aber leider kläglich in die Hosen ging...

    Wäre super wenn ihr mir helfen könnt.. und ja, die Suche und php.net hab ich natürlich schon bemüht
    mfg
    SKar

    visit http://www.uht-traktor.ch

  • #2
    versuche dich an preg_match, oder, wenn es mehr als einmal vorkommt, an preg_match_all

    wenn's nicht klappt, denn bitte mit nicht funktionierendem code posten
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      hey danke, mit preg_match_all hats wunderbar funktioniert!!!!
      Hier noch die Lösung:
      PHP-Code:
      $text "<DOC DID=20 TID=10>bla</DOC>"// Beispiel
      preg_match_all("/\<DOC DID=(.*) TID=(.*)\>(.*)\<\/DOC\>/i"$text$matchesPREG_PATTERN_ORDER); 
      mfg
      SKar

      visit http://www.uht-traktor.ch

      Kommentar


      • #4
        schön

        aber PREG_SET_ORDER bringt imho das Ergebnis in die Form, die du haben willst undnicht PREG_PATTERN_ORDER

        oder?
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          UPDATE:

          die von mir oben gepostete Lösung funktioniert nicht ganz korrekt.
          Folgeder Code sollte jetzt aber stimmen (inkl. Ausgabe):
          PHP-Code:
          $text "<DOC DID=10 TID=11>bla1</DOC> . 
                  .<DOC DID=20 TID=21>bla2</DOC> .
                  .<DOC DID=30 TID=31>bla3</DOC> .
                  .<DOC DID=40 TID=41>bla4</DOC> .
                  .<DOC DID=50 TID=51>bla5</DOC>"
          ;
          preg_match_all("/\<DOC DID=([0-9]*) TID=([0-9]*)\>/i"$text$matchesPREG_SET_ORDER);

          $count count($matches);
          for (
          $i=0$i $count$i++) {
              print 
          $matches[$i][1]."<br>";
              print 
          $matches[$i][2]."<br><br>";

          EDIT:
          @ mrhappiness: da hast du Recht, zudem funktionierte der code nichtmehr sobald mehr wie ein Pattern in einem Text vorkam... jetzt gehts auf jeden Fall...
          Zuletzt geändert von SKar; 12.11.2004, 12:41.
          mfg
          SKar

          visit http://www.uht-traktor.ch

          Kommentar

          Lädt...
          X