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

CommonMark\Node\Text\Strong

Klasse

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

Kategorie: misc

Signatur

class CommonMark\Node\Text\Strong extends CommonMark\Node

Beschreibung

CommonMark\Node\Text\Strong ist ein Knotentyp aus der PHP-Erweiterung krakjoe/commonmark und bildet den CommonMark-Standard-Inline-Block für fetten Text ab. Im Markdown-Quelltext entspricht dieser Knoten Texten, die mit **...** oder __...__ umschlossen sind.

Der Knoten wird typischerweise als Kindelement eines anderen Knotens (z. B. Paragraph oder Heading) im Syntaxbaum eingefügt und enthält seinerseits Text-Knoten oder weitere Inline-Knoten als Kinder. Beim Traversieren oder Manipulieren des AST kann man über die geerbten Methoden wie getChild(), appendChild() oder prependChild() auf den Inhalt zugreifen und diesen verändern.

Die Klasse eignet sich besonders für Anwendungsfälle, bei denen Markdown-Dokumente programmatisch erstellt, analysiert oder transformiert werden sollen – zum Beispiel beim Extrahieren aller fett formatierten Textpassagen oder beim Hinzufügen von Fettschrift zu bestehenden Absätzen.

Da Strong von CommonMark\Node erbt, stehen alle generischen AST-Methoden zur Navigation (z. B. parent, next, previous) und zur Manipulation des Baumes zur Verfügung.

Beispiele

Fett formatierten Text aus einem Markdown-Dokument extrahieren

<?php
use CommonMark\Parser;
use CommonMark\Node\Text\Strong;
use CommonMark\Node\Text\Text;

$parser = new Parser();
$document = $parser->parse('Hallo **Welt** und __PHP__!');

// AST traversieren und alle Strong-Knoten finden
function findStrongNodes(\CommonMark\Node $node, array &$results = []): array {
    if ($node instanceof Strong) {
        $results[] = $node;
    }
    foreach ($node->children() as $child) {
        findStrongNodes($child, $results);
    }
    return $results;
}

$strongNodes = findStrongNodes($document);
foreach ($strongNodes as $strong) {
    // Textinhalt des Strong-Knotens lesen
    $child = $strong->firstChild;
    if ($child instanceof Text) {
        echo 'Fetter Text gefunden: ' . $child->literal . PHP_EOL;
    }
}
Fetter Text gefunden: Welt Fetter Text gefunden: PHP

Programmatisch einen Strong-Knoten erstellen und in einen Absatz einfügen

<?php
use CommonMark\Node\Document;
use CommonMark\Node\Block\Paragraph;
use CommonMark\Node\Text\Strong;
use CommonMark\Node\Text\Text;
use CommonMark\Render\HTML;

// Dokument und Absatz erstellen
$document = new Document();
$paragraph = new Paragraph();

// Prefix-Text
$prefix = new Text();
$prefix->literal = 'Achtung: ';
$paragraph->appendChild($prefix);

// Strong-Knoten mit Textinhalt erstellen
$strong = new Strong();
$text = new Text();
$text->literal = 'Wichtige Information';
$strong->appendChild($text);
$paragraph->appendChild($strong);

// Absatz dem Dokument hinzufügen
$document->appendChild($paragraph);

// Als HTML rendern
$renderer = new HTML();
echo $renderer->render($document);
<p>Achtung: <strong>Wichtige Information</strong></p>

// Wichtig · Fallstricke

Verfügbarkeit: Die Klasse ist nur verfügbar, wenn die PECL-Erweiterung krakjoe/commonmark installiert und aktiviert ist. Sie ist kein Bestandteil des PHP-Kerns. Vor der Nutzung sollte mit extension_loaded('commonmark') geprüft werden, ob die Erweiterung vorhanden ist.

Kindknoten: Ein Strong-Knoten enthält in der Regel einen oder mehrere Text-Knoten als Kinder. Es ist jedoch auch möglich, weitere Inline-Knoten wie Emphasis oder Code zu verschachteln, was dem CommonMark-Standard entspricht.

Unterschied zu Emphasis: Während Strong den fett dargestellten Text (<strong> in HTML) repräsentiert, steht CommonMark\Node\Text\Emphasis für kursiv dargestellten Text (<em> in HTML). Beide können ineinander verschachtelt werden.