String zerlegen - Evtl. Reguläre Ausdrücke?

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

  • String zerlegen - Evtl. Reguläre Ausdrücke?

    Hallo zusammen,

    ich komme bei einem Problem nicht weiter. Mein Ziel ist es, einen String per Trennzeichen zu zerlegen. Mit der explode-Funktion komme ich aber nicht weiter.

    Mein String der zerlegt werden soll könnte so aussehen:
    Code:
    Test1;Test2;[Test;3];[[Test4]
    Das Trennzeichen wäre hier das Semikolon. Ich bräuchte folgendes zurückgeliefertes Array:
    Code:
    Array[0]='Test1';
    Array[1]='Test2';
    Array[2]='Test;3';
    Array[3]='[Test4';
    Das Problem für mich ist das dritte und vierte Teilstück. Hier ist zum einen das Semikolon Teil des Inhalts und dient nicht als Trennzeichen (erkennbar an den eckigen Klammern) und zum anderen ist im letzten Teilstück die eckige Klammer Teil des Inhalts.

    Meine Suche im Internet brachte mir auch keine wirkliche Hilfe. Vielleicht auch deswegen, weil ich nicht genau wusste wie man das Problem benennt und somit konnte ich nichts finden.

    Hat jemand von euch ne Idee? Wäre klasse. Vielen Dank schon mal im voraus.

    Gruß, Marc

  • #2
    Mit regulären Ausdrücken alleine wirst du nicht weit kommen..
    Ein "endlicher Automat" dürfte das Mittel zum Zweck sein!
    zum Glück wird ja in PHP jetzt ein Goto eingeführt, das erleichtert das Schreiben dieser Dinger ungemein
    Zuletzt geändert von combie; 21.12.2007, 09:35.
    Wir werden alle sterben

    Kommentar


    • #3
      Original geschrieben von combie
      Mit regulären Ausdrücken alleine wirst du nicht weit kommen..
      Mindestens nicht mit einem einzigen nicht. Ich weiss ja nicht genau, was für Möglichkeiten in deinem String vorkommen können. Wenn ich aber vom Beispiel ausgehe, ginge folgendes:
      • Semikolon und eckige Klammer innerhalb von eckigen Klammern durch "unmögliche" Zeichenfolgen ersetzen (1)
      • eckige Klammern entfernen (2)
      • Zeichenkette aufteilen (3)
      • "unmögliche" Zeichenfolgen wieder mit Semikolon und eckiger Klammer ersetzen (4)
      Das könnte dann etwa so aussehen:
      PHP-Code:
      $txt preg_replace(array('/(\\[.*);(.*\\])/U''/(\\[[^\\]]*)\\[(.*\\])/U'), array("$1@X@$2""$1#Y#$2"), $txt);    // 1
      $txt preg_replace('/\\[(.[^\\]]*)\\]/U'"$1"$txt);            // 2
      $txt_ar explode(';'$txt);                // 3
      $txt_ar preg_replace(array('/@X@/U''/#Y#/U'), array(';''['), $txt_ar);    // 4 
      Irgendwie habe ich zwar das Gefühl, dass es einfacher gehen müsste, es fällt mir aber nichts ein.
      Zuletzt geändert von H2O; 21.12.2007, 10:34.
      Gruss
      H2O

      Kommentar


      • #4
        Danke euch beiden! Ihr habt mir sehr geholfen!

        Gruß, Marc

        Kommentar

        Lädt...
        X