Signatur
Beschreibung
CommonMark\Node\SoftBreak ist ein Knoten im abstrakten Syntaxbaum (AST) der CommonMark-Erweiterung für PHP. Er steht für einen weichen Zeilenumbruch, der im Quelltext durch einen einfachen Zeilenumbruch (ohne zwei vorangestellte Leerzeichen) entsteht. Im Gegensatz zum harten Zeilenumbruch (CommonMark\Node\LineBreak) erzeugt ein Soft Break in der HTML-Ausgabe standardmäßig kein <br>-Tag, sondern lediglich ein Leerzeichen oder wird ignoriert.
Soft Breaks treten auf, wenn ein Autor im Markdown-Quelltext zwar eine neue Zeile beginnt, aber keine zwei Leerzeichen oder einen Backslash vor dem Zeilenende setzt. CommonMark-Renderer können Soft Breaks unterschiedlich behandeln – als Leerzeichen, als Zeilenumbruch oder als nichts – je nach Konfiguration.
Die Klasse wird typischerweise beim Traversieren oder Manipulieren des AST verwendet, etwa um alle Soft Breaks durch Hard Breaks zu ersetzen oder um spezielle Rendering-Logik zu implementieren. Da SoftBreak ein Blattknoten ist, besitzt er keine Kinder.
Beispiele
Soft Breaks im AST erkennen und ersetzen
<?php
use CommonMark\Parser;
use CommonMark\Node\SoftBreak;
use CommonMark\Node\LineBreak;
$parser = new Parser();
// Zwei Absatzzeilen ohne harten Zeilenumbruch
$document = $parser->parse("Erste Zeile\nZweite Zeile");
// AST traversieren und Soft Breaks durch Hard Breaks ersetzen
foreach ($document as $node) {
if ($node instanceof SoftBreak) {
$hardBreak = new LineBreak();
$node->replace($hardBreak);
}
}
$renderer = new CommonMark\HtmlRenderer();
echo $renderer->render($document);
Soft Breaks im AST zählen
<?php
use CommonMark\Parser;
use CommonMark\Node\SoftBreak;
$markdown = "Zeile eins\nZeile zwei\nZeile drei";
$parser = new Parser();
$document = $parser->parse($markdown);
$softBreakCount = 0;
foreach ($document as $node) {
if ($node instanceof SoftBreak) {
$softBreakCount++;
}
}
echo "Anzahl Soft Breaks: " . $softBreakCount;
// Wichtig · Fallstricke
Soft Break vs. Hard Break: Ein SoftBreak entsteht durch einen einfachen Zeilenumbruch im Markdown-Quelltext. Ein LineBreak (Hard Break) hingegen entsteht durch zwei oder mehr Leerzeichen am Zeilenende oder einen Backslash direkt vor dem Zeilenumbruch. Im Standard-HTML-Rendering erzeugt ein Soft Break kein <br>-Tag.
Da SoftBreak ein Blattknoten ist, können keine Kindknoten hinzugefügt werden. Versuche, Kinder einzufügen, führen zu einem Fehler. Die Klasse gehört zur PECL-Erweiterung commonmark und ist nicht standardmäßig in PHP enthalten.