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

CommonMark\Node\CustomInline

Klasse

Repräsentiert einen benutzerdefinierten Inline-Knoten im CommonMark-Dokumentenbaum.

Kategorie: misc

Signatur

class CommonMark\Node\CustomInline extends CommonMark\Node

Beschreibung

CommonMark\Node\CustomInline ist Teil der PHP-Erweiterung commonmark und bildet einen benutzerdefinierten Inline-Knoten im abstrakten Syntaxbaum (AST) eines CommonMark-Dokuments ab. Benutzerdefinierte Inline-Knoten ermöglichen es, eigene Inhaltsbereiche innerhalb einer Zeile zu definieren, die nicht durch den CommonMark-Standard abgedeckt sind.

Dieser Knotentyp ist besonders nützlich, wenn man den CommonMark-Parser um eigene Inline-Elemente erweitern möchte – etwa für spezielle Auszeichnungen, Platzhalter oder Metainformationen, die später bei der Ausgabe individuell gerendert werden sollen. Ein CustomInline-Knoten besitzt zwei Text-Eigenschaften: onEnter und onExit, die beim Eintritt in bzw. beim Verlassen des Knotens während des Rendering-Prozesses ausgegeben werden.

Die Klasse erbt von CommonMark\Node und bietet damit alle Standard-Traversal- und Manipulations-Methoden des AST, wie das Einfügen von Kind-Knoten, das Navigieren zu Geschwisterknoten oder das Entfernen aus dem Baum. CustomInline ist das Inline-Pendant zur Klasse CommonMark\Node\CustomBlock, die Block-Ebene abdeckt.

Parameter

Name Typ Default Beschreibung
$onEnter string Text, der beim Betreten des benutzerdefinierten Inline-Knotens im Rendering ausgegeben wird. Kann direkt als Eigenschaft gesetzt werden: $node->onEnter = '<span>';
$onExit string Text, der beim Verlassen des benutzerdefinierten Inline-Knotens im Rendering ausgegeben wird. Kann direkt als Eigenschaft gesetzt werden: $node->onExit = '</span>';

Rückgabewert

Typ

Beispiele

Benutzerdefinierten Inline-Knoten erstellen und in den AST einfügen

<?php
use CommonMark\Node\CustomInline;
use CommonMark\Node\Document;
use CommonMark\Node\Paragraph;
use CommonMark\Node\Text;

// Einfaches Dokument mit einem Absatz erzeugen
$document = new Document();
$paragraph = new Paragraph();
$document->appendChild($paragraph);

// Benutzerdefinierten Inline-Knoten erstellen
$custom = new CustomInline();
$custom->onEnter = '<mark>';
$custom->onExit  = '</mark>';

// Textknoten als Kind des Custom-Inline-Knotens hinzufügen
$text = new Text();
$text->literal = 'Hervorgehobener Text';
$custom->appendChild($text);

// Custom-Inline-Knoten dem Absatz hinzufügen
$paragraph->appendChild($custom);

// Ausgabe des onEnter-Wertes
echo $custom->onEnter; // <mark>
echo $custom->onExit;  // </mark>
<mark></mark>

AST traversieren und CustomInline-Knoten identifizieren

<?php
use CommonMark\Parse;
use CommonMark\Node\CustomInline;

// Markdown parsen
$markdown = "Dies ist ein *Beispiel*-Text.";
$document = CommonMark\Parse($markdown);

// Alle Knoten traversieren und CustomInline-Instanzen ausgeben
$walker = $document->walker();
while ($event = $walker->next()) {
    $node = $event->getNode();
    if ($node instanceof CustomInline) {
        echo 'CustomInline gefunden: onEnter=' . $node->onEnter
           . ', onExit=' . $node->onExit . PHP_EOL;
    }
}

echo 'Traversierung abgeschlossen.';
Traversierung abgeschlossen.

// Wichtig · Fallstricke

Hinweis zur Erweiterung: CommonMark\Node\CustomInline ist Teil der PECL-Erweiterung commonmark und steht nicht im PHP-Kern zur Verfügung. Die Erweiterung muss separat installiert werden (pecl install commonmark).

Die Eigenschaften onEnter und onExit werden direkt als HTML-Strings verwendet. Achte darauf, keine unvalidierten Benutzerdaten dort einzutragen, um Cross-Site-Scripting (XSS) zu verhindern. Verwende immer htmlspecialchars() oder ein Whitelist-Verfahren, bevor externe Eingaben in diese Felder geschrieben werden.

Da die Dokumentation zur commonmark-PECL-Erweiterung spärlich ist, empfiehlt sich ein Blick in die C-Bibliothek cmark, auf der die Erweiterung basiert, um das vollständige Verhalten von Custom-Knoten zu verstehen.