以前は外部のライブラリ(Parsedownなど)を導入するのが一般的でしたが、Laravel(9以降)なら標準搭載されているヘルパー関数だけで実装できます。
コントローラーで以下のように記述するだけで、マークダウンを安全なHTMLに変換できます。
use Illuminate\Support\Str;
$html = Str::markdown('# こんにちは'); サンプルコード
■Controller側
namespace App\Http\Controllers;
use Illuminate\Support\Str;
class MarkdownController extends Controller
{
public function show()
{
// マークダウンを定義
$markdown = <<<'MARKDOWN'
# マークダウン表示テスト
標準機能だけで**太字**や[リンク](https://xxxx.com)が使えます。
- AAA
- BBB
- CCC
MARKDOWN;
// HTMLに変換
$html = Str::markdown($markdown);
return view('markdown.show', compact('html'));
}
}■Blade側
{!! !!}でエスケープを無効にして表示すればOK。<div class="markdown-container">
{{-- HTMLタグを有効にして出力 --}}
{!! $html !!}
</div>