String an bestimmter Stelle aufteilen
AndreR
- php
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.
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
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ß
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
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.
Hi AndreR!
Vielleicht ist ja die BBCode-Parserklasse von Christian Seiler eine Alternative für dich.
MfG H☼psel
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!
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
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é
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