Ich glaub ich muss etwas genauer erklären wie das momentan ist. Mit den Smilies das soll ja eben genau dadurch kein Problem mehr sein.
Also ich habe ein Gästebuch mit den Möglichkeiten fett, kursiv und unterstrichen zu schreiben. Außerdem kann mit über img Bilder einbinden und über url Links. Dann gibts eben noch die Option Ascii mittels welcher Ascii Bilder ins Gästebuch gesetzt werden können. Und halt eben noch die 20 Smilies oder wie viele das sind. Mein Parser geht nun hin, wandelt zuerst mal die drei Schriftformatierungen sowie img und url um da diese äußerst unwahrscheinlich in Ascii bildern vorkommen. Danach wird dann die Ascii Geschichte erkannt anhand [ascii] und [/ascii] und mittels preg_split auseinander gelegt. Das heißt ich habe die Variablen $preascii, $ascii und $postascii wo eben der Gästebucheintrag vor und nach dem Ascii Bild sind und das Ascii Bild selbst. Vor dem Ascii Bild kann nichts mehr von Ascii kommen und die Variable jage ich gleich durch den "Smilie Parser" und gut. Nur nach dem Ascii Bild könnte ja etwas Text mit Smilies und sowas folgen und dann noch ein zweites Ascii Bild. Deshalb muss ich die Variable erst mal in Ruhe lassen. Wenn ich nun aber jedes Ascii Bild in Codes umwandle so das im Quellcode dann jede menge &#xx;&#xx;&#xx;... stehen dann könnte ich zuerst die Ascii Erkennung laufen lassen, dann ohne Bedenken die Textformatierung und img sowie url Tags und dann die Smilie Geschichte weil ich genau weiß diese Zeichen sind beim Ascii Bild so oder so codiert und können nicht mehr falsch erkannt werden. Das heißt jedoch auch entweder ich wandle die Zeichen von dem Ascii Bild so um das jeder Browser diese trotzdem bei der Ausgabe richtig darstellt (sprich mit &#xx; für jedes Zeichen) oder aber ich muss erst das Ascii Bild umwandeln, dann alle weiteren Parser laufen lassen und am Ende dann erneut alles umwandeln. Wobei ich dann bei der Rückwandlung wieder das Problem hab, dass ich ein Kriterium brauche alles richtig zu erkennen weil ja jeder einzelne Parser den Text nicht in Teilen weiter reicht sondern als ein Teil.
Hier noch mal ein Praxisbeispiel zur Veranschaulichung.
Benutzer schreibt folgendes ins Gästebuch.
Hallo Max,
hast Du auf dem Foto [ b ]den[ / b ] Typ gesehen?
[ img ]http : // www . urlzumbild . de / irgendwas . jpg[ / img ]
Hab nen cooles Ascii Bild für dich
[ ascii ].,;.,

::,,..'#'"##4{[]}...[ / ascii ]
is [ u ]das[ / u ] nicht schön?
Die Parser wandeln momentan die Nachricht so um das das so aussieht.
Hallo Max,
hast Du auf dem Foto < b >den< / b > Typ gesehen?
< img src = http : // www . urlzumbild . de / irgendwas . jpg >
Hab nen cooles Ascii Bild für dich
< span class = asciifont >.,;.,

::,,..'#'"##4{[]}...< / span >
is < u >das< / u>] nicht schön?
Tja und wie man hier im Forum auch schon schön sehen kann is in der Ascii Nachricht ein Smilie versteckt und das nervt mich weil ich das verhindern muss. Im Moment gehe ich hin und jage erst mal alles durch den Smilie Parser und am Schluss lasse ich den Ascii Parser laufen und lasse aus der Ascii Nachricht dann eben alles wieder zurück umwalden. Ist aber meiner Meinung nach ganz schön doof erst alles so umzuwandeln und dann wieder zurück. Vor allem muss ich deshalb ständig darüber nachdenken kann ich das und das jetzt so machen oder gibts dann wieder Probleme. Und jeder neue Smilie den ich einsetze muss ich auch in allen anderen Ecken berücksichtigen sonst wird das mit der Rückverwandlung nichts.
EDIT: Vielleicht könnten wir das ja insgesamt sogar so machen, dass ich mal meine Funktionen und das hier poste und wir daraus mal eine allgemein gültige Klasse daraus machen. Vielleicht könnte das andere auch mal interessieren.