AndreR: String an bestimmter Stelle aufteilen

Hallo,
ich möchte gerne einen String an bestimmten Stellen aufteilen. Genauer soll er immer dann geteilt werden, wenn ein BB-Code beginnt oder endet. Als Beispiel:

Dies ist ein [b]fetter[/b] Text.

Soll werden zu (_ steht für Leerzeichen):

[1] => Dies ist ein_
[2] => [b]fetter[/b]
[3] => _Text.

Das Ganze soll in einem Array landen. Leider haben meine bisherigen Lösungen immer die BB-Zeichen mit abgeschnitten und auf 2 stand nur noch "fetter". Kann man das irgendwie lösen?

Vielen Dank schon einmal.

  1. Hallo,
    ich möchte gerne einen String an bestimmten Stellen aufteilen. Genauer soll er immer dann geteilt werden, wenn ein BB-Code beginnt oder endet. Als Beispiel:

    Dies ist ein [b]fetter[/b] Text.

    Soll werden zu (_ steht für Leerzeichen):

    [1] => Dies ist ein_
    [2] => [b]fetter[/b]
    [3] => _Text.

    Das Ganze soll in einem Array landen. Leider haben meine bisherigen Lösungen immer die BB-Zeichen mit abgeschnitten und auf 2 stand nur noch "fetter". Kann man das irgendwie lösen?

    Vielen Dank schon einmal.

    Ich würds über explode machen .

    Grüße

    1. Ich würds über explode machen .

      Wie soll denn das genau gehen? Da gehen doch dann die "Trennzeichen" verloren und außerdem lässt es sich nicht gescheit kombinieren.

      Gruß

  2. Hi,

    Leider haben meine bisherigen Lösungen immer die BB-Zeichen mit abgeschnitten und auf 2 stand nur noch "fetter". Kann man das irgendwie lösen?

    Bestimmt lassen sich deine bisherigen "Lösungen" entsprechend erweitern.

    MfG ChrisB

    --
    Light travels faster than sound - that's why most people appear bright until you hear them speak.
    1. Bestimmt lassen sich deine bisherigen "Lösungen" entsprechend erweitern.

      Hi,
      meine bisherige Lösung ist irgendwie total für den Eimer. Sie Teilt immer in drei Teile und unterschlägt den Teil in den Klammern. Ich muss aber zugeben, dass ich in RegEx zimlich schlecht bin.

      $splits = preg_split('/\[.+\]/', $line, -1, PREG_SPLIT_DELIM_CAPTURE);

      Wie Du siehst fehlt dort außerdem die Anweisung für das End-Tag, da ich nicht wirklich ein Oder hinbekommen habe.

  3. Hi AndreR!

    Vielleicht ist ja die BBCode-Parserklasse von Christian Seiler eine Alternative für dich.

    MfG H☼psel

    --
    "It's amazing I won. I was running against peace, prosperity, and incumbency."
    George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
    Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
    1. Vielleicht ist ja die BBCode-Parserklasse von Christian Seiler eine Alternative für dich.

      Hallo, vermutlich nicht. Mir geht es nicht um das Pharsen. Ich muss den Code weiterverarbeiten und brauche dazu die Bestandteile in separaten Strings.

      Trotzdem danke!

      1. Hi AndreR!

        Vielleicht ist ja die BBCode-Parserklasse von Christian Seiler eine Alternative für dich.
        Hallo, vermutlich nicht. Mir geht es nicht um das Pharsen.
        [...] brauche dazu die Bestandteile in separaten Strings.

        Das widerspricht sich. Um die Bestandteile zu bekommen, musst du die Strings parsen.

        Ich muss den Code weiterverarbeiten [...]

        Mit der verlinkten Klasse kannst du für deine geparsten Bestandteile Callback-Funktionen definieren.

        Schau´s dir ruhig nochmal an. Meiner Meinung nach ist diese Klasse genau das was du brauchst.

        MfG H☼psel

        --
        "It's amazing I won. I was running against peace, prosperity, and incumbency."
        George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
        Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
        1. Schau´s dir ruhig nochmal an. Meiner Meinung nach ist diese Klasse genau das was du brauchst.

          MfG H☼psel

          Hallo, ich habe es mir jetzt mal angesehen. Allerdings ist es wie gesagt für meinen speziellen Fall eher ungeeignet, da es doch eher um eine Spezialanwendung geht. Die einzelnen Bestandteile werden nicht direkt ersetzt sondern an einen Prozessor weitergegeben, der die Strings weiterverarbeitet. Die Steuerbefehle für dieses Script muss ich aus den BB-Codes ableiten. Bei verschachtelten Codes muss ich zusätzlich einen anderen Befehl ausführen (abhängig von der Verschachtelung).

          André

          1. Hi,

            Hallo, ich habe es mir jetzt mal angesehen. Allerdings ist es wie gesagt für meinen speziellen Fall eher ungeeignet, da es doch eher um eine Spezialanwendung geht. Die einzelnen Bestandteile werden nicht direkt ersetzt sondern an einen Prozessor weitergegeben, der die Strings weiterverarbeitet. Die Steuerbefehle für dieses Script muss ich aus den BB-Codes ableiten.

            Mit der Klasse kannst du für jeden BB-Code eine Funktion angeben, die sich um dessen Inhalt kümmern soll - auch in noch "unersetzter" Form.

            Bei verschachtelten Codes muss ich zusätzlich einen anderen Befehl ausführen (abhängig von der Verschachtelung).

            Zugriff auf die ParentNodes eines Knotens hast du auch, wenn du ihn brauchst.

            MfG ChrisB

            --
            Light travels faster than sound - that's why most people appear bright until you hear them speak.