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

CommonMark\Node\LineBreak

Klasse

Repräsentiert einen harten Zeilenumbruch (Hard Line Break) im CommonMark-Dokumentenbaum.

seit PHP 0.1.0 Kategorie: misc

Signatur

class CommonMark\Node\LineBreak extends CommonMark\Node

Beschreibung

CommonMark\Node\LineBreak ist ein Knotentyp der CommonMark-Erweiterung für PHP und steht für einen harten Zeilenumbruch in einem CommonMark-Dokument. Ein harter Zeilenumbruch entsteht im Markdown-Quelltext, wenn eine Zeile mit zwei oder mehr Leerzeichen oder einem Backslash (\) endet, bevor eine neue Zeile beginnt.

Im Gegensatz zu einem weichen Zeilenumbruch (CommonMark\Node\SoftBreak), der je nach Renderer unterschiedlich behandelt wird, erzeugt ein LineBreak bei der HTML-Ausgabe stets ein <br />-Element. Dadurch wird ein expliziter Zeilenumbruch im gerenderten Dokument erzwungen.

Als Blattknoten besitzt LineBreak weder Kinder noch besonderen Textinhalt. Der Knoten wird in der Regel automatisch beim Parsen eines CommonMark-Dokuments über CommonMark\Parser erzeugt, kann aber auch manuell in einen bestehenden Dokumentenbaum eingefügt werden, um programmatisch harte Zeilenumbrüche einzufügen.

  • Erzeugt bei der HTML-Ausgabe ein <br />-Element.
  • Ist ein Blattknoten — keine Kindknoten möglich.
  • Wird beim Parsen von Markdown mit zwei abschließenden Leerzeichen oder einem Backslash am Zeilenende automatisch erstellt.

Beispiele

Harten Zeilenumbruch aus geparsten Markdown erkennen

<?php
use CommonMark\Parser;
use CommonMark\Node\LineBreak;
use CommonMark\Node\Document;

$parser = new Parser();
// Zwei abschließende Leerzeichen erzeugen einen harten Zeilenumbruch
$document = $parser->parse("Erste Zeile  \nZweite Zeile");

// Dokumentbaum nach LineBreak-Knoten durchsuchen
function findLineBreaks(CommonMark\Node $node): void {
    if ($node instanceof LineBreak) {
        echo "Harter Zeilenumbruch gefunden!" . PHP_EOL;
    }
    foreach ($node->children() as $child) {
        findLineBreaks($child);
    }
}

findLineBreaks($document);
Harter Zeilenumbruch gefunden!

Harten Zeilenumbruch programmatisch in einen Dokumentbaum einfügen

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

$document = new Document();
$paragraph = new Paragraph();

$text1 = new Text();
$text1->literal = 'Erste Zeile';

$lineBreak = new LineBreak();

$text2 = new Text();
$text2->literal = 'Zweite Zeile';

$paragraph->appendChild($text1);
$paragraph->appendChild($lineBreak);
$paragraph->appendChild($text2);
$document->appendChild($paragraph);

$renderer = new HTML();
echo $renderer->render($document);
<p>Erste Zeile<br />\nZweite Zeile</p>

// Wichtig · Fallstricke

Unterschied zu SoftBreak: CommonMark\Node\SoftBreak repräsentiert einen weichen Zeilenumbruch (einfacher Zeilenumbruch im Quelltext ohne zwei Leerzeichen), der je nach Renderer als Leerzeichen oder tatsächlicher Umbruch behandelt wird. LineBreak erzeugt dagegen immer ein <br /> in der HTML-Ausgabe.

PHP-Erweiterung erforderlich: Die Klasse gehört zur PHP-Erweiterung commonmark (PECL), die separat installiert werden muss (pecl install commonmark). Sie steht nicht in der PHP-Standardbibliothek zur Verfügung. Alternativ existiert die reine PHP-Implementierung league/commonmark, die eine andere API verwendet.