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

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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
    Last edited by combie; 21-12-2007, 09:35.
    Wir werden alle sterben

    Comment


    • #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.
      Last edited by H2O; 21-12-2007, 10:34.
      Gruss
      H2O

      Comment


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

        Gruß, Marc

        Comment

        Working...
        X