Zend_Markup Parser
Zend_Markup wird aktuell mit zwei Parsern ausgeliefert, einen BBCode
Parser und einen Textile Parser.
Theorie des Parsens
Die Parser von Zend_Markup sind Klasse die Text mit Markup in
einen Token Baum konvertieren. Auch wenn wir hier den BBCode Parser als Beispiel
verwenden ist die Idee des Token Baums die gleiche bei allen Parsern. Wir beginnen mit
diesem Teil von BBCode als Beispiel:
Der BBCode Parser nimmt diesen Wert, teilt Ihn auf und erzeugt den folgenden Baum:
[b]
foo
[i]
bar
baz
Wie man sieht sind die schließenden Tags weg. Sie werden nicht als Inhalt der
Baumstruktur angezeigt. Das ist deswegen der Fall, da schließende Tags kein Teil des
aktuellen Inhalts sind. Das bedeutet aber nicht das die schließenden Tags einfach
verloren sind. Sie sind in der Tag Information für das Tag selbst gespeichert. Es ist
auch zu beachten das dies nur eine vereinfachte Darstelliung des Baumes selbst ist. Der
aktuelle Baum enthält viel mehr Information, wie die Attribute der Tags und deren Namen.
Der BBCode Parser
Der BBCode Parser ist ein Zend_Markup Parser der BBCode in einen
Token Baum konvertiert. Die Syntax alle BBCode Tags ist:
Einige Beispiel von gültigen BBCode Tags sind:
Standardmäßig werden alle Tags durch Verwendung des Formats '[/tagname]' geschlossen.
Der Textile Parser
Der Textile Parser ist ein Zend_Markup Parser der Textile in
einen Token Baum konvertiert. Weil Textile keine Tag Struktur hat ist nachfolgend eine
Liste von Beispiel Tags:
Liste der grundsätzlichen Textile Tags
Beispiel Eingabe
Beispiel Ausgabe
*foo*
foo]]>
_foo_
foo]]>
??foo??
foo]]>
-foo-
foo]]>
+foo+
foo]]>
^foo^
foo]]>
~foo~
foo]]>
%foo%
foo]]>
PHP(PHP Hypertext Preprocessor)
PHP]]>
"Zend Framework":http://framework.zend.com/
Zend Framework]]>
h1. foobar
foobar]]>
h6. foobar
foobar]]>
!http://framework.zend.com/images/logo.gif!
]]>
Auch der Textile Parser wrappt alle Tags in Paragraphen; ein Paragraph endet mit zwei
Leerzeilen, und wenn es mehr Tags gibt, wird ein neuer Paragraph hinzugefügt.
Listen
Der Textile Parser unterstützt auch zwei Typen von Listen. Den nummerischen Typ
der das "#" Zeichen verwendet und Bullet-Listen welche das "*" Zeichen verwenden.
Anbei ein Beispiel für beide Listen:
Das obige erzeugt zwei Listen: Die erste nummeriert; und die zweite mit Punkten.
In den Listen Elementen können normale Tags wie dick (*), und hochgestellt (_)
verwendet werden. Tags die auf einer neuen Zeile beginnen müssen (wie 'h1' usw.)
können nicht innerhalb von Listen verwendet werden.