Die Antwort findet sich in diesen beiden Zeilen der bbcode.php:
Code: Alles auswählen
$code_entities_match = array('#<#', '#>#', '#"#', '#:#', '#\[#', '#\]#', '#\(#', '#\)#', '#\{#', '#\}#');
$code_entities_replace = array('<', '>', '"', ':', '[', ']', '(', ')', '{', '}');
Wenn man sich das genauer ansieht dann stellt man fest, dass der Doppelpunkt ( : ), welcher ja die Smileys einleitet durch seine Encodierung & # 5 8 ; (wenn ich es zusammenschreibe dann ersetzt er es beim benutzen der Edit Funktion, die Leerzeichen gehören nicht rein...) ersetzt wird. Das alleine sollte eigentlich ausreichen, damit die Smileys nicht mehr geparst werden. Muss dann wohl nur noch irgendwo in den Mod rein. Der Smileyparser sucht zwar nicht zwingend nach dem Doppelpunkt, aber alle Smileycodes beginnen oder enden mit einem Doppelpunkt so dass der Parser die ersetzten Doppelpunkte nicht findet. Wenn ihr die Doppelpunkte z.b. testweise durch einen Bindestrich ersetzt werdet ihr feststellen dass dann alle Smileys geparst werden, selbst wenn sie sich in einem Code Tag befinden.
Wenn also ein paar Smileys geparst werden die es nicht sollen würde ich schauen, ob der Doppelpunkt durch die HTML Entität ersetzt wird (am besten bereits beim First pass, also vor dem Eintrag in die Datenbank, so passiert das auch beim Code Tag, das wird dann beim Bearbeiten denke ich wieder Rückersetzt, müsste man notfalls neu einfügen.)
Edit: Ich sehe gerade, die HTML Entities die oben drin sind sind offenbar bei der Darstellung hier beim verwenden der EDIT Funktion ersetzt worden...