Start · Sprachen · PHP · Referenz · CommonMark\Node\Text

CommonMark\Node\Text

Klasse

Repräsentiert einen reinen Textknoten im CommonMark-AST (Abstract Syntax Tree).

Kategorie: misc

Signatur

class CommonMark\Node\Text extends CommonMark\Node

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 Text­abschnitt 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() und insertBefore().
  • Die Eigenschaft literal enthä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

Typ

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;
    }
}
Textinhalt: Hallo Textinhalt: Welt Textinhalt: ! Das ist ein Test.

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);
<p>Hallo, das ist ein dynamisch erzeugter Absatz!</p>

// 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.