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

CommonMark\Node\HTMLInline

Klasse

Repräsentiert einen eingebetteten Inline-HTML-Knoten im CommonMark-Abstract-Syntax-Baum.

Kategorie: misc

Signatur

class CommonMark\Node\HTMLInline extends CommonMark\Node

Beschreibung

CommonMark\Node\HTMLInline ist ein Knotentyp aus der PHP-Erweiterung commonmark und bildet eingebettetes Inline-HTML innerhalb eines CommonMark-Dokumentbaums ab. Inline-HTML sind HTML-Tags oder -Entitäten, die direkt im Fließtext eines Markdown-Dokuments vorkommen, z. B. <em>Wichtig</em> oder <br />.

Dieser Knoten entsteht beim Parsen von Markdown-Inhalten mit dem CommonMark-Parser, wenn der Parser auf Inline-HTML-Sequenzen trifft. Im Unterschied zu CommonMark\Node\HTMLBlock, der ganze HTML-Blöcke (eigene Absätze) repräsentiert, steht HTMLInline für HTML-Fragmente, die innerhalb eines Absatzes oder einer anderen Inline-Umgebung eingebettet sind.

Der Knoten besitzt eine literal-Eigenschaft, über die der rohe HTML-String des Inline-Fragments gelesen und gesetzt werden kann. Beim Traversieren oder Transformieren des AST lässt sich so gezielt auf eingebettete HTML-Teile zugreifen, um diese zu prüfen, zu sanitisieren oder zu ersetzen.

Die Klasse ist besonders nützlich, wenn eigene Renderer oder AST-Transformationen implementiert werden und dabei Inline-HTML-Knoten gesondert behandelt werden müssen — etwa um aus Sicherheitsgründen unerwünschte Tags herauszufiltern oder zu escapen.

Beispiele

Inline-HTML-Knoten aus geparsten Markdown erkennen

<?php
use CommonMark\Parser;
use CommonMark\Node\HTMLInline;
use CommonMark\Interfaces\IVisitor;
use CommonMark\Interfaces\IVisitable;

$parser = new Parser();
$document = $parser->parse('Hallo &lt;strong&gt;Welt&lt;/strong&gt; und &lt;br /&gt; Zeilenumbruch.');

// AST traversieren und HTMLInline-Knoten finden
function findHTMLInlineNodes($node): void {
    if ($node instanceof HTMLInline) {
        echo 'Inline-HTML gefunden: ' . $node->literal . PHP_EOL;
    }
    foreach ($node->children() as $child) {
        findHTMLInlineNodes($child);
    }
}

findHTMLInlineNodes($document);
Inline-HTML gefunden: <strong> Inline-HTML gefunden: </strong> Inline-HTML gefunden: <br />

Literal eines HTMLInline-Knotens manuell setzen

<?php
use CommonMark\Node\HTMLInline;
use CommonMark\Node\Paragraph;
use CommonMark\Node\Document;
use CommonMark\Render\HTML as HTMLRenderer;

$document = new Document();
$paragraph = new Paragraph();
$document->appendChild($paragraph);

$inlineHtml = new HTMLInline();
$inlineHtml->literal = '&lt;span class="highlight"&gt;';
$paragraph->appendChild($inlineHtml);

$renderer = new HTMLRenderer();
echo $renderer->render($document);
<p><span class="highlight"></p>

// Wichtig · Fallstricke

Sicherheitshinweis: Inline-HTML-Knoten enthalten rohen HTML-Code, der bei der Ausgabe nicht automatisch escaped wird. Wenn Markdown aus nicht vertrauenswürdigen Quellen (z. B. Benutzereingaben) geparst wird, können HTMLInline-Knoten schädliche HTML- oder JavaScript-Fragmente enthalten. Es wird dringend empfohlen, solche Knoten beim Rendern zu entfernen oder zu escapen bzw. den CommonMark-Renderer mit deaktiviertem Inline-HTML zu konfigurieren (html_unsafe-Option prüfen).

Die commonmark-PHP-Erweiterung ist eine native C-Erweiterung und muss separat installiert werden. Sie ist nicht in der PHP-Standardinstallation enthalten.