Signatur
Beschreibung
CommonMark\Node\Text ist ein Knotentyp aus der PHP-Erweiterung commonmark und steht für einen einfachen Textinhalt innerhalb des Abstract Syntax Trees (AST) eines CommonMark-Dokuments. Beim Parsen von Markdown-Inhalten wird jeder zusammenhängende Textabschnitt als Text-Knoten im AST abgelegt.
Die Klasse wird typischerweise verwendet, wenn man den AST programmatisch traversiert, um Textinhalte zu lesen, zu manipulieren oder neu aufzubauen. Über die geerbte Eigenschaft literal lässt sich der eigentliche Textinhalt des Knotens lesen und schreiben.
Neben der Verwendung beim Traversieren eines geparsten Dokuments kann Text auch manuell instanziiert und in einen bestehenden AST-Baum eingefügt werden, um Dokumente programmatisch zu erzeugen oder zu transformieren. Dies ist besonders nützlich bei Rendering-Pipelines, die Markdown-Inhalte dynamisch anpassen.
- Erbt alle Methoden und Eigenschaften von
CommonMark\Node, z. B.appendChild(),prependChild(),insertAfter()undinsertBefore(). - Die Eigenschaft
literalenthält den rohen Textinhalt des Knotens.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $literal | string | Optionaler Textinhalt, mit dem der Knoten initialisiert wird. Entspricht dem rohen Textinhalt, der später über $node->literal abrufbar ist. |
Rückgabewert
Beispiele
Textknoten aus geparstem Markdown-Dokument traversieren
<?php
use CommonMark\Parser;
use CommonMark\Node\Text;
use CommonMark\Node\Document;
$parser = new Parser();
$document = $parser->parse('Hallo **Welt**! Das ist ein Test.');
// Alle Textknoten im AST finden und ausgeben
$walker = $document->walker();
while ($event = $walker->next()) {
$node = $event->getNode();
if ($node instanceof Text && $event->isEntering()) {
echo 'Textinhalt: ' . $node->literal . PHP_EOL;
}
}
Text-Knoten manuell erstellen und in den AST einfügen
<?php
use CommonMark\Node\Document;
use CommonMark\Node\Paragraph;
use CommonMark\Node\Text;
use CommonMark\Renderer\HtmlRenderer;
// Neues Dokument programmatisch aufbauen
$document = new Document();
$paragraph = new Paragraph();
$textNode = new Text();
$textNode->literal = 'Hallo, das ist ein dynamisch erzeugter Absatz!';
$paragraph->appendChild($textNode);
$document->appendChild($paragraph);
// HTML rendern
$renderer = new HtmlRenderer();
echo $renderer->renderDocument($document);
// Wichtig · Fallstricke
Hinweis zur Erweiterung: CommonMark\Node\Text ist Teil der PECL-Erweiterung commonmark (auch bekannt als php-commonmark). Diese Erweiterung ist nicht standardmäßig in PHP enthalten und muss separat installiert werden (pecl install commonmark).
Der Knotentyp Text darf keine Kindknoten haben – er ist ein Blattknoten im AST. Versuche, appendChild() auf einem Text-Knoten aufzurufen, können zu Fehlern führen.
Die Eigenschaft literal enthält den Rohtext ohne weitere Markdown-Interpretation. Sonderzeichen wie & oder < sind dort unescaped gespeichert; das Escaping für die HTML-Ausgabe übernimmt der Renderer.