hannes: BBCODE andersrum

Hallo.
Ich habe z.B. einen Tet mit dem Inhalt:
'111111[CODE]2222[CODE]000000[/CODE]2222[/CODE]333333'
Nun hätte ich das gern so, das ich in einen String '111111' habe in einen andern '333333' und dann noch einen mit dem Rest.
Wie kann ich sowas relativ einfach bewerkstelligen?

Im endeffekt möchte ich alles umwandeln was ausserhalt von [CODE] und [/CODE] stehen umwandeln.

BBCodes wandle ich mit:
$Text=preg_replace("/[b](.*?)[/b]/si","<b>\1</b>", $Text);

Nur andersrum hab ich das noch nicht hinbekommen.

Danke Zannes

  1. Hallo hannes.

    Ich habe z.B. einen Tet mit dem Inhalt:
    '111111[CODE]2222[CODE]000000[/CODE]2222[/CODE]333333'
    Nun hätte ich das gern so, das ich in einen String '111111' habe in einen andern '333333' und dann noch einen mit dem Rest.
    Wie kann ich sowas relativ einfach bewerkstelligen?

    Mit Hilfe von preg_split:

    $str_test = '111111[CODE]2222[CODE]000000[/CODE]2222[/CODE]333333';  
    $arr_test = preg_split('!\[/?CODE\]!', $str_test);  
      
    echo $arr_test[1]; # 2222
    

    Einen schönen Dienstag noch.

    Gruß, Mathias

    --
    ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
    debian/rules
    1. Danke, das hilft mir schonmal weiter :-)
      Leider komme ich noch nicht zu dem gewünschten Erfolg.
      Ich wollte ja damit erreichen, das ich alles was ausserhalb von [CODE] und [/CODE] ist ändern kann.
      das klappt ja auch gut, sobald nur einmal [CODE] und [/CODE] vorkommt.
      Gibt es mehrere, oder sogar verschachtelte, komme ich nicht weiter.

      Gruß ZZ und noch n schönen Donnerstag :-)

      Hallo hannes.

      Ich habe z.B. einen Tet mit dem Inhalt:
      '111111[CODE]2222[CODE]000000[/CODE]2222[/CODE]333333'
      Nun hätte ich das gern so, das ich in einen String '111111' habe in einen andern '333333' und dann noch einen mit dem Rest.
      Wie kann ich sowas relativ einfach bewerkstelligen?

      Mit Hilfe von preg_split:

      $str_test = '111111[CODE]2222[CODE]000000[/CODE]2222[/CODE]333333';

      $arr_test = preg_split('![/?CODE]!', $str_test);

      echo $arr_test[1]; # 2222

      
      >   
      >   
      > Einen schönen Dienstag noch.  
      >   
      > Gruß, Mathias  
      > 
      
      1. Hallo Zappzarapp.

        Ich wollte ja damit erreichen, das ich alles was ausserhalb von [CODE] und [/CODE] ist ändern kann.
        das klappt ja auch gut, sobald nur einmal [CODE] und [/CODE] vorkommt.
        Gibt es mehrere, oder sogar verschachtelte, komme ich nicht weiter.

        Das heißt, du suchst eine richtige Parserklasse.

        Einen schönen Freitag noch.

        Gruß, Mathias

        --
        ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
        debian/rules
  2. Hallo hannes,

    Im endeffekt möchte ich alles umwandeln was ausserhalt von [CODE] und [/CODE] stehen umwandeln.

    Dann würde ich den Text so bearbeiten:
    $text = '[/CODE]'.$text.'[CODE]';

    Dann machst du das mit
    $text = preg_replace("/[/CODE](.*)[CODE]/Usi","<b>\1</b>", $text);

    Ich bin jetzt nicht wirklich fit in Regex, aber ich meine das U hinten müsse da hin, damit das Ganze nicht gierig ist, ansonsten wird direkt das erste und letzte CODE genommen.
    http://de.php.net/manual/de/reference.pcre.pattern.modifiers.php

    Gruß,
    Dodwin