[Funktion] String in ein hash parsen

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

  • [Funktion] String in ein hash parsen

    Hallo,

    ich habe einen String "id(num):name(text):birth(date)" und möchte daraus ein assoc.-array erzeugen und das möglichst effektiv. Bislang mache ich das so:

    PHP-Code:
      $ntags preg_match_all('/([^:]+?)\((.+?)\)/'$order_tags$a);
      if (! 
    $ntags)
        throw new 
    Exception('Error parsing taglist: "'.$order_tags.'"');
      for (
    $i=0$i<$ntags$i++) {
        
    $b[$a[1][$i]] = $a[2][$i];
      }
    print_r($a);
    print_r($b); 
    Das Ergebnis soll so aussehen:
    array( 'id' => 'num', 'name' => 'text', 'birth' => 'date' )

    Hat jemand eine bessere Idee?
    Zuletzt geändert von Dr.Speck; 15.09.2007, 13:54.

  • #2
    ja, einfach ein vollständiges pattern erstellen (von anfang bis ende) und den backreferences namen geben...

    Kommentar


    • #3
      Original geschrieben von TobiaZ
      den backreferences namen geben...
      Klingt gut, aber hast Du auch ein Codebeispiel?

      Wie kann man Backrefs Namen geben wenn die Anzahl variabel sein soll?

      Kommentar


      • #4
        Da ich nicht glaube, dass du in der kurzen Zeit ansatzweise versucht hast, selbst nachzuforschen: Nein!

        Kommentar


        • #5
          die lösung ist vollkomen in ordnung. ich würde auch nicht anderes machen
          ich würde aber statt einer schleife
          array_combine($a[1],$a[2]) machen
          und regex etwa so /([^]+)\(([^)(:]+)/
          Slava
          bituniverse.com

          Kommentar


          • #6
            Original geschrieben von TobiaZ
            Da ich nicht glaube, dass du in der kurzen Zeit ansatzweise versucht hast, selbst nachzuforschen: Nein!
            Vielen Dank für diese Hilfreiche Nachricht (und ab in die Tonne damit...)

            Kommentar


            • #7
              Hi slava,

              Original geschrieben von Slava
              array_combine($a[1],$a[2]) machen[/B]
              array_combine() war genau das was ich suchte, danke Slava !

              Kommentar

              Lädt...
              X