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

CommonMark\Node\Paragraph

Klasse

Repräsentiert einen Absatz (<code>&lt;p&gt;</code>) im CommonMark-Dokumentbaum.

seit PHP 1.0.0 Kategorie: misc

Signatur

class CommonMark\Node\Paragraph extends CommonMark\Node

Beschreibung

CommonMark\Node\Paragraph ist ein Knoten-Typ aus der commonmark-PHP-Erweiterung (pecl/commonmark) und bildet einen Absatz im Abstract Syntax Tree (AST) eines CommonMark-Dokuments ab. Im gerenderten HTML entspricht er einem <p>-Element.

Absätze sind Block-Level-Elemente und können Inline-Knoten wie CommonMark\Node\Text, CommonMark\Node\Emphasis oder CommonMark\Node\Strong als Kindknoten enthalten. Sie werden beim Parsen von gewöhnlichem Fließtext (Zeilen ohne spezielles Markdown-Präfix) automatisch erzeugt.

Die Klasse wird typischerweise beim programmatischen Aufbau oder Traversieren eines CommonMark-Dokumentbaums verwendet – entweder um den geparsten Baum zu analysieren, zu modifizieren oder um neue Absätze dynamisch einzufügen. Sie erbt alle Methoden zur Baum-Navigation und -Manipulation von CommonMark\Node, etwa appendChild(), prependChild(), insertAfter() sowie die Kindknoten- und Elternknoten-Eigenschaften.

Sollen eigene Absätze erzeugt und in ein Dokument eingefügt werden, reicht eine einfache Instanziierung ohne Parameter, gefolgt vom Hinzufügen von Inline-Kindknoten.

Beispiele

Absatz aus geparsten Dokument auslesen

<?php
use CommonMark\Parse;
use CommonMark\Node\Paragraph;
use CommonMark\Node\Text;

$markdown = "Erster Absatz.\n\nZweiter Absatz.";
$document = Parse($markdown);

// Alle Absätze im Baum durchlaufen
foreach ($document->children() as $node) {
    if ($node instanceof Paragraph) {
        foreach ($node->children() as $inline) {
            if ($inline instanceof Text) {
                echo $inline->literal . PHP_EOL;
            }
        }
    }
}
Erster Absatz. Zweiter Absatz.

Neuen Absatz programmatisch erstellen und einfügen

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

$document = new Document();

$paragraph = new Paragraph();
$text = new Text();
$text->literal = 'Hallo, CommonMark-Welt!';
$paragraph->appendChild($text);

$document->appendChild($paragraph);

echo HTML($document);
<p>Hallo, CommonMark-Welt!</p>

// Wichtig · Fallstricke

Die commonmark-Erweiterung ist eine PECL-Erweiterung und nicht standardmäßig in PHP enthalten. Sie muss separat installiert werden (pecl install commonmark). Alternativ kann die reine PHP-Bibliothek league/commonmark verwendet werden, die einen ähnlichen, aber eigenen API-Ansatz bietet.

Beim Traversieren des AST sollte stets auf den konkreten Knotentyp geprüft werden, da nicht alle Kindknoten eines Dokuments Absätze sind – es können auch Heading, BlockQuote, FencedCode usw. auftreten.