Seite 1 von 2
Problem mit PHP-Highlighter (phpBB)
Verfasst: 27.02.2007 09:55
von killerbees19
Hallo. Ich habe ein kleines Problem mit einem MOD, es geht um diesen hier:
http://www.redio.de/postings/12004.html#12004
Dort kann man auch das Problem nachlesen.
Ich habe es nun mit der Hilfe von DrDeath schon geschafft, dass die BB-Codes innerhalb von [php]Tags nicht geparsed werden, wie man hier sieht:
http://www.forum.happytec.at/viewtopic. ... 1622#11622
Das einzige Problem ist jetzt nur noch, dass Smilies geparsed werden und auch vielleicht die Wortzensur.
Bisher habe ich nun folgendes in der Datei
bbcode.php verändert:
http://www.happytec.at/phpbb.de/bbcode_ ... bisher.txt
Wie schaffe ich es nun, dass innerhalb von [php]-Tags bei der Ausgabe keine Smilies geparsed werden und auch keine Wortzensur vorgenommen wird?
Vielen Dank schon im Voraus für eure Hilfe
MfG Christian
Verfasst: 03.03.2007 15:34
von killerbees19
Kennt sich niemand mit dem Innenleben von phpBB oder mit Regulären Ausdrücken aus?
Man müsste es doch nur so ähnlich machen wie beim
Verfasst: 19.03.2007 15:00
von killerbees19
Keine Vorschläge?
MfG Christian
Verfasst: 20.03.2007 18:55
von killerbees19
Ich habe gerade bemerkt, dass einige Smilies nun auch innerhalb des
Code: Alles auswählen
-Tags geparsed werden: http://www.forum.happytec.at/viewtopic.php?p=12589#12589
Das seltsame ist, dass es nur bei manchen Smilies ist, nicht bei allen....
Weiß dafür jemand eine Lösung?
Danke schon im Voraus.
MfG Christian
Verfasst: 27.03.2007 19:35
von Rondom
Ich schlage vor, einfach neu machen. Ohne Dateien kann eh keiner was sehen.l Und soviel Arbeit ist das jetzt net.
Wenn der [php]-BBcode einen Bug hat, sollte der Autor da beheben. Falls du ihn falsch eingebaut hast, kannst du entweder die bbcode.php posten oder einfach die bbcode.php neu machen.
Verfasst: 27.03.2007 19:39
von killerbees19
Danke einmal für die Antwort. Einbaufehler gibt es zu 100% keine, ich habe das in einem halben Jahr nun 30 mal überprüft. Es handelt sich zu 100% um einen Fehler im MOD. Das Problem ist, der Autor kümmert sich nicht darum. Er wusste keine Lösung und schweigt sich darüber aus. Das Problem mit diesem MOD haben übrigens einige Personen
MfG Christian
Verfasst: 27.03.2007 21:30
von Rondom
Ich bin inzwischen auch nicht mehr in phpBB drinne, aber iirc werden bbcodes dadruch ausgefiltert, dass sie keine uid bekommen und für Smilies gibt es ne extra Funktion. Der Code in der bbcode.php ist relativ gut kommentiert, meiner Meinung nach. Man kann ja mal ein bisschen rumexperimentieren (auch ohne Regex-Kenntnisse).
PS: Ich weiß, dass mein ShowHide-Hack auch einen Bug (Glashaus) hat, der nur bei mehreren verschachtelten Showhides mit Titel auftritt, aber ich habe schon lange das Interesse für phpBB verloren. Vielleicht in den nächsten Wochen...
EDIT: typo
Verfasst: 27.03.2007 23:46
von gn#36
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...
Verfasst: 28.03.2007 08:09
von killerbees19
Danke einmal gn#36 und Rondom. Mit dem Doppelpunkt habe ich es auch schon bemerkt. Aber leider beginnen nicht alle Smilies mit Doppelpunkten.
Dazu gibt es hier übrigens einen Textbeitrag, wo ich es mit [php] und
Code: Alles auswählen
ausprobiert habe: http://www.forum.happytec.at/viewtopic.php?p=13034#13034
Ich werde mich jetzt mal durch die bbcode.php durchwühlen :lol:
[color=blue]EDIT:[/color]
Durch einen neuen Test ist mir aufgefallen, dass nur bei folgenden Smilies das Problem auftritt:
[code] :) :( :? :?: :!: :| xD =)
Ich habs innerhalb der
Code: Alles auswählen
-Tags geschrieben, damit nicht manche Smilies umgewandelt werden ;-)
[color=blue]EDIT2:[/color]
Innerhalb des [code]-Tags werden auch nur xD und ;P geparsed...
[color=blue]EDIT3:[/color]
[b]Interessante neue Erkenntnis:[/b]
In einem neuen, nicht gemoddeten phpBB, frisch aufgesetzt, werden folgende Smilies innerhalb der [code]-tags geparsed: xD und ;P
Und das ist in jedem phpBB so. Damit ist der eine Fehler mit dem [code]-Tag einmal nicht vom MOD, sondern scheinbar ein kleiner Fehler in phpBB. Den anderen Fehler teste ich gerade noch aus ;-)
[color=blue]EDIT4:[/color]
Nun habe ich es geschafft, dass nur mehr die gleichen Fehler wie im [code]-Tag vorhanden sind. Die Lösung findet ihr wieder hier, die unterste Anweisung habe ich noch geändert ;-)
http://www.happytec.at/phpbb.de/bbcode_php_problem_bisher.txt
Das ganze sieht nun so aus: http://www.forum.happytec.at/viewtopic.php?p=13035#13035
Das Problem mit dem PHP-Highlighter-MOD wäre also gelöst.
Und für das zweite Problem: Das nehme ich in Kauf und werde gegebenenfalls die Smilies umändern (xD und ;P). Nur finde ich es seltsam, dass man in phpBB keine Smilies verwenden kann, die keine Klammer / Doppelpunkt verwenden. Vielleicht kann man dieses Problem ja irgendwie lösen.
MfG Christian
Verfasst: 28.03.2007 18:46
von Rondom
Für das nicht parsen von Smilies innerhalb Code-Tags gab es mal einen Hack, ich glaube es war auf phpbbhacks.com. Das war zu Zeiten von 2.0.3 oder so und ich dachte das wäre inzwischen längst gefixt. Aber anscheinend haben Sie das nur mit dem oben beschriebenen "Doppelpunkthack" gemacht. Ich weiß nicht wie der Hack das gemacht hat. Der meiner Meinung nach "korrekteste" Weg wäre Smilies mit der bbcode_uid zu versehen, wie es ja auch für bbcodes innerhalb Code-tags nicht getan wird (nicht so praktisch für laufende Installationen, wegen Aufwand für Umstellung).