Start · Sprachen · PHP · Referenz · CommonMark\Render\HTML

CommonMark\Render\HTML

Funktion

Rendert ein <code>CommonMark\Node\Document</code>-Objekt als HTML-String.

seit PHP 1.0.0 Kategorie: misc

Signatur

CommonMark\Render\HTML(CommonMark\Node\Document $document): string

Beschreibung

CommonMark\Render\HTML ist eine Funktion der CommonMark-Erweiterung für PHP (PECL-Paket cmark) und konvertiert ein zuvor geparstes CommonMark-Dokument in einen HTML-String. Sie bildet zusammen mit CommonMark\Parse das typische Zwei-Schritte-Muster: zuerst Parsen, dann Rendern.

Der Rückgabewert ist ein vollständiges HTML-Fragment (kein vollständiges <html>-Dokument), das direkt in eine Webseite eingebettet werden kann. Das Rendern folgt der CommonMark-Spezifikation und erzeugt standardkonformes HTML.

Die Funktion ist besonders dann sinnvoll, wenn man den Dokumentenbaum (AST) zwischen Parsen und Rendern noch manipulieren oder traversieren möchte – für reine Konvertierung ohne AST-Zugriff bietet sich alternativ CommonMark\Convert an, das beide Schritte kombiniert.

Wichtig: Die Ausgabe stammt direkt aus dem CommonMark-Parser; dennoch sollten Inhalte, die von nicht vertrauenswürdigen Benutzern kommen, zusätzlich mit einem HTML-Sanitizer geprüft werden, um XSS-Angriffe zu verhindern.

Parameter

Name Typ Default Beschreibung
$document Pflicht CommonMark\Node\Document Ein geparstertes CommonMark-Dokument, wie es z. B. von CommonMark\Parse zurückgegeben wird.

Rückgabewert

Typ
string
Beschreibung
Gibt das gerenderte HTML als String zurück. Das Ergebnis ist ein HTML-Fragment (kein vollständiges Dokument) gemäß CommonMark-Spezifikation.

Beispiele

Einfache Markdown-zu-HTML-Konvertierung in zwei Schritten

<?php
// Schritt 1: Markdown parsen
$document = CommonMark\Parse("# Hallo Welt\n\nDies ist ein **Beispiel** mit CommonMark.");

// Schritt 2: Als HTML rendern
$html = CommonMark\Render\HTML($document);

echo $html;
<h1>Hallo Welt</h1> <p>Dies ist ein <strong>Beispiel</strong> mit CommonMark.</p>

AST manipulieren vor dem Rendern

<?php
// Markdown parsen
$document = CommonMark\Parse("Hallo Welt\n\nZweiter Absatz.");

// AST traversieren und erstes Paragraph-Kind ausgeben
foreach ($document->children() as $node) {
    if ($node instanceof CommonMark\Node\Paragraph) {
        echo "Gefundener Paragraph-Knoten\n";
        break;
    }
}

// Danach als HTML rendern
$html = CommonMark\Render\HTML($document);
echo $html;
Gefundener Paragraph-Knoten <p>Hallo Welt</p> <p>Zweiter Absatz.</p>

// Wichtig · Fallstricke

Sicherheitshinweis: Die von CommonMark generierte HTML-Ausgabe kann potenziell gefährliche Inhalte enthalten, wenn der Eingabe-Markdown von nicht vertrauenswürdigen Quellen stammt (z. B. Nutzer-Eingaben). CommonMark erlaubt in bestimmten Konfigurationen eingebettetes Raw-HTML. Es wird empfohlen, die Ausgabe mit einem dedizierten HTML-Sanitizer (z. B. HTMLPurifier) zu bereinigen, bevor sie an den Browser ausgegeben wird.

Die Funktion ist Teil des PECL-Pakets cmark und muss separat installiert werden (pecl install cmark). Sie steht nicht im PHP-Core zur Verfügung. Für eine reine Konvertierung ohne AST-Zugriff ist CommonMark\Convert oft die einfachere Wahl.