Philipp: Strings in Teile aufteilen

Guten Nachmittag

Ich habe einen String

msg="[hallo1][hallo2][hallo3]";

nun möchte ich die hallo1, hallo2, hallo3 Teile (die in belieber reihenfolge, irgendwo in dem string stehen) in drei neuen variblen speichern.

wie mache ich das??

Danke für eure Hilfe

  1. Grüsse,

    msg="[hallo1][hallo2][hallo3]";
    nun möchte ich die hallo1, hallo2, hallo3 Teile (die in belieber reihenfolge, irgendwo in dem string stehen) in drei neuen variblen speichern.

    kommt drauf an. Wenn die zu extrahierenden Stringteile durch eckige Klammern gekennzeichnet werden (diese also nirgendwo anders in $msg vorkommen) müsste eigentlich sowas funktionieren:

    preg_match_all('/[[^]]*]/',$msg,$matches);

    Das sollte (ist ungetestet) alle Klammernpaare finden (innerhalb der Klammern darf alles stehen außer "]") und den Inhalt der Treffer im Array $matches ablegen. Den kannst Du noch durchlaufen:

    foreach ($matches AS $index => $value) {
       $matches[ $index ] = preg_replace('/^[(.*)]$/','\1',$value);
    }

    Das entfernt die eckigen Klammern am Anfang und Ende jedes Elements.

    Naja, ich hab jetzt keine Ahnung, ob das funktioniert oder ob ich am Freitag nachmittag nicht schon ein bisschen zu ausgelaugt bin für sowas, aber probieren kannst Du's ja mal ;-)

    viele Grüße
      Achim Schrepfer

    --
    »Wenn die meisten sich schon armseliger Kleider und Möbel schämen, wieviel mehr sollten wir uns da erst armseliger Ideen und Weltanschauungen schämen.« - Albert Einstein
    Selfcode: sh:) fo:| ch:| rl:° br:> n4:{ ie:% mo:} va:| de:< zu:| fl:( ss:) ls:& js:|
    1. Ich habe es mal so ausprobiert:

      <?php
       $msg="[hallo1][hallo2][hallo3]";
       preg_match_all('/[[^]]*]/',$msg,$matches);
       for ($i=1;$i<3;$i++) {
        echo $matches[i]; }
      ?>

      Aber irgendwei wird jetzt gar nicht mehr angezeigt....

      Was mache ich falsch?