| | | | |
| |||||||
| Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene |
|
| | LinkBack | Themen-Optionen | Thema bewerten |
| | |
| Erfahrener Benutzer Registriert seit: 05.09.2004
Beiträge: 106
PHP-Kenntnisse: Fortgeschritten ![]() | Hi, ich arbeite gerade an einer Überarbeitung für meine Forensoftware und damit auch am BB-Code-Parser. Der bisherige Parser war im Grunde Suchen/Ersetzen (RegExp, tw. mit Callback) basiert, führte jedoch häufiger zu diversen Problemen, daher hab ich mir überlegt den neuen Parser/Compiler auf Stack-Basis zu schreiben und habe dafür Ideen gesammelt. Zuerst habe ich mir überlegt, was soll der Parser können und wie sollen die Tags aussehen. Folgende Spezifikation habe ich für die Syntax der BB-Code-Tags: - Die Tags sehen so aus: [ element][ /element] - Die Tags können bis zu 3 Attribute vereinen, wobei das erste Attribut den Namen des Tags hat, also z.B. [ element=x attr=y weiteresattr=z][ /element] - Element und Attributschlüssel dürfen nur aus Buchstaben bestehen - Attributwerte können mit ' und " eingeschlossen werden (z.B. um innerhalb des Werts [ und ] nutzen zu können. Beispiel: [ url="http://www.x.de/?a[]=b"]Test[ /url] - "Standalone"-Tags sollen ebenfalls möglich sein, z.B. [hr] Folgende Funktionalität soll erreicht werden: - Korrekte Umwandlung - Unterscheidung in Inline- und Block-Tags (ähnlich display-Eigenschaft aus CSS) - Inlinelemente sollen korrigiert werden, sobald ein Block-Element folgt, z.B. [ b]as[i]df [ hr] wird zu [ b]ad[ i]df [ /i][ /b][ hr]. - Entfernen von einzelnen Block-Elementen (z.B. es gibt ein übriges [/quote] o.ä. - Die BB-Codes sind in Klassen modelliert, mehrere Codes können sich eine Klasse teilen (z.B. b, i und u-Tags) - Schachtelung soll möglich sein (hängt ab von den Klassenimplementierungen ab), Beispiel [ quote]x[ quote]y[ /quote]x[ /quote] - Filter sollen später möglich sein (z.B. für Zensur und Smileys) - ... irgendwas vergessen? Nun habe ich angefangen zu implementieren, die Struktur ähnelt einem Compiler (Scanner, Parser, Compiler). Ich habe bereits folgendes erfolgreich implementiert: BBCodeCompiler.php - Hauptklasse die in den Programmen genutzt würde, der Scanner funktioniert schon ziemlich gut, leider sind Parser und Compiler absolut nicht so, wie ich mir das vorstelle, die PHP-Code: PHP-Code: PHP-Code: PHP-Code: Jegliche Ideen etc. sind willkommen, bei Fragen fragt. Vielen Dank für etwaige Beiträge... Gruß MaMo Ich habe mir bereits andere Parser angesehen, z.B. diesen http://www.phphulp.nl/php/scripts/7/567/ , aber die waren mir entweder zu rudimentär oder gingen grob an meiner Anforderung vorbei. Geändert von MaMo-Net (15.01.2010 um 18:04 Uhr). |
| | |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Moderator Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Seh ich ähnlich, vor allem muss man sich wenn man etwas komfort will auch den WYSIWYG-Editor dazu wieder selbst erfinden oder einen umschreiben, was im endeffekt entweder AJAX oder eine zusätzliche Javascript-Implementierung des Parsers vorraussetzt. Wenn man sicher html filtern will sollte man sich mal htmlpurifier anschauen. Ansonsten verweise ich mal hierauf: Was genau bringt mir der Einsatz von ANTLR? - Developer's Guide hab damit zwar noch nciht gearbeitet aber rein von der theorie her sollte das wohl in die richtung gehen. Mit zf 1.10 kommt die Komponente Zend_Markup ( Zend_Markup - Pieter Kokx - Zend Framework Wiki )die Parser + Renderer unterstützt um aus einem Format ein anderes zu erstellen, in der beta ist der code schon drin, manual gibt es bis 1.10 raus ist wohl nur hier: 45.2.Â*Getting Started With Zend_Markup
__________________ robo47.net - Blog, Codeschnipsel und mehr | |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Probleme mit PHP Code | HappyDieMuschel | PHP Tipps 2008 | 7 | 28.05.2008 06:34 |
| [Erledigt] PHP Code aus Datenbank | ayti | PHP Tipps 2008 | 8 | 26.05.2008 19:40 |
| Design und Code Trennen | TeazY | PHP Tipps 2008 | 29 | 21.05.2008 12:08 |
| Nur bestimmten Html Code zulassen? | litterauspirna | PHP Tipps 2008 | 5 | 29.04.2008 12:30 |
| einfacher Code zum Einbinden von "Inhaltsbereichen" | MaxDittmann | PHP-Fortgeschrittene | 6 | 01.10.2007 15:54 |
| PHP: Wie parst der Server den Code am schnellsten? | SvenLittkowski | PHP Tipps 2007 | 4 | 17.12.2005 10:58 |
| bb code in htm code wandeln | janni | PHP Tipps 2007 | 2 | 04.11.2005 22:36 |
| JS Code in PHP Code?? | HTML, Usability und Barrierefreiheit | 12 | 08.08.2005 15:45 | |
| Seite 1/2/3..Code was haltet ihr davon? | Matthiasnet | PHP Tipps 2005-2 | 4 | 29.07.2005 20:29 |
| [Erledigt] Lesbarkeit von Code | Off-Topic Diskussionen | 6 | 14.07.2005 14:48 | |
| code aus db mit eval replacen | chief-thomson | PHP Tipps 2005-2 | 4 | 08.07.2005 15:33 |
| Benutzereingaben von Formular prüfen (Sicherer Code?) | PHP Tipps 2005 | 6 | 27.01.2005 10:16 | |
| code verstecken | Skazi | PHP Tipps 2005 | 4 | 19.01.2005 13:51 |
| [Erledigt] bb code innerhalb von bb code geht nicht | PHP Tipps 2007 | 2 | 12.01.2005 17:29 | |
| Problem mit COde | PHP Tipps 2004 | 5 | 28.08.2004 16:04 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| bbc parser php, code parsen, php bbcode parser, php bbcode klasse, php compiler class, php compiler, bbcode-tag vervollständigen, parsen php codeschnipsel, convert bbcode php, bbcode parser stack, compiler stack einbinden, preg_match compiler nachbau, bbc parser klasse php, ubb code php class, bbcode php compiler, parser-compiler php javascript, program php bb tags, bcc2 compiler, javascript regex compile bbcode, \no opening tag found\ |