F.Ko-Jiの「一秒後は未来」

CommonMark for PHP で改行をbrタグに変換するオプション

PHP 用の Markdown ライブラリである「CommonMark」で改行を反映させる、つまり <br> に変換する方法が分かりづらかったのでメモ。

結論から言うと、

$converter = new CommonMarkConverter([
    'renderer' => [
        'soft_break' => '<br>',
    ]
]);

のように CommonMarkConverter のコンストラクタのオプションとして渡す renderer の soft_break の値を <br> にすればOKです。

ref: Cannot make soft_break work · Issue #311 · thephpleague/commonmark

ドキュメント (バージョン 1.5) にもこの設定項目があるのは確認していたのですが、

$converter = new CommonMarkConverter([
    'renderer' => [
        'block_separator' => "\n",
        'inner_separator' => "\n",
        'soft_break'      => "\n",
    ],
    'enable_em' => true,
    'enable_strong' => true,
    'use_asterisk' => true,
    'use_underscore' => true,
    'unordered_list_markers' => ['-', '*', '+'],
    'html_input' => 'escape',
    'allow_unsafe_links' => false,
    'max_nesting_level' => INF,
]);

soft_break – String to use for rendering soft breaks

とあるだけでちょっと分かりづらかった。

PHP の Markdown ライブラリはいくつか使ったことがあるのですが、たいていの場合デフォルトでは改行が br タグに変換されないようになってます。GitHub の投稿フォームなど改行が br に変換されるのに慣れているので、ちょっと戸惑ってしまいますね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

著者について

fkoji

F.Ko-Ji

Webエンジニアやってます。最近は ドットインストール の開発がお仕事です。その傍ら、個人で Meity電車遅延なう梅酒.in#グラドル自画撮り部 の部室といったネットサービスを開発・運営してます。梅酒と草野球とリアル脱出ゲームが好きです。

» 詳しいプロフィールや運営サービスの一覧など