技術メモなど

業務や日々のプログラミングのなかで気になったことをメモしています。PHP 成分多め。

PHPでMarkdownをHTMLに変換するparsedownを試した

Markdownをパースするライブラリを調べたところparsedownが良い感じだったのでメモ。 文中のPHPは7.2を使用。

準備

composerでインストール。

$ composer require erusev/parsedown

実際に変換してみる

<?php
require_once "./vendor/autoload.php";

$Parsedown = new Parsedown();
// safeModeをtrueにしておくとエスケープしてくれる。
$Parsedown->setSafeMode(true);

$md = <<<EOF
# 見出し1
parsedownのサンプルです。   
parsedownのサンプルです。   
parsedownのサンプルです。


* 箇条書き
* 箇条書き

*太文字*

|題名|題名|題名|
|:---|:---:|---:|
|左寄せ|中央寄せ|右寄せ|

<script>
alert('hoge');
</script>
EOF;

// 出力
echo $Parsedown->text($md);

上記の例だと、以下のようなhtmlが出力される。

<h1>見出し1</h1>
<p>parsedownのサンプルです。<br />
parsedownのサンプルです。<br />
parsedownのサンプルです。</p>
<ul>
<li>箇条書き</li>
<li>箇条書き</li>
</ul>
<p><em>太文字</em></p>
<table>
<thead>
<tr>
<th style="text-align: left;">題名</th>
<th style="text-align: center;">題名</th>
<th style="text-align: right;">題名</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">左寄せ</td>
<td style="text-align: center;">中央寄せ</td>
<td style="text-align: right;">右寄せ</td>
</tr>
</tbody>
</table>
<p>&lt;script&gt;
alert('hoge');
&lt;/script&gt;</p>

ブラウザでも確認。

f:id:shkn:20190506023141p:plain
sample.php

簡単にMarkdown->htmlの変換に対応することができた。

参考文献

本家(デモ有)
Better Markdown Parser in PHP

Github
GitHub - erusev/parsedown: Better Markdown Parser in PHP