マークダウンが使えるようになりました

お疲れ様でございます。
東京都墨田区よりまいりました、有限会社ビアスラインと申します。

弊社が開発しているツールに「ロバミミ http://robamimi.net 」というものがございます。
こちらですがスレッド式に自分だけメモが残せるというだけの、ただただほんとにそれだけ代物なのですが、全文検索が使えたりハッシュタグが使えたりで、雑多なことを自分なりの軸でまとめるのにうってつけのクーリー・テクノロジーでして。
(自画自賛)

が、もうほんとのほんとでテキストデータしか残せないもので、涙ぐましいぐらいにいろいろ自分で工夫してデータ残したりしてました。
あたりまえなんですが、テキストだけだと表現の幅がものすごく狭く、文章に緩急的なものがつけにくく。
なのでそろそろマークダウンの機能なんかも導入したいなあと思い。
で、最初は自分で作ろうかと思ったのですが、楽勝で挫折しまして。
とほほ。
いや思ったより大変でした。
(当たり前)

そこで先人達のお力をお借りしようとググってみたところ、以下のページがヒット。

PHP用のMarkdownパーサーライブラリ比較
 https://qiita.com/naga3/items/eb638d90e77fa0e1ae0b

こちらのページでは3つのライブラリが紹介されており、それぞれ公式サイトへのリンクなども紹介されていまして、そちらを一通り拝見。

上記ページでは

・cebe/markdown
 HP: http://markdown.cebe.cc/
 github: https://github.com/cebe/markdown

をオススメしていたので、じゃあということでこちらのライブラリから試すことに。

導入は composer.json の require に

"cebe/markdown": "*"

を記載して composer update でインストール完了。
改修対象のプログラムで初めて composer を導入する場合は composer で生成される autoload.php を require すればOK。

次に処理をおこないたいところで適宜

$parser = new \cebe\markdown\GithubMarkdown(); // フレーバー=マークダウンの文法はGithubテイストで
$parser->html5 = true; // パース後のhtmlはHTML5で展開
$parser->enableNewlines = true; // 改行を<br>に(たぶん)
return $parser->parse($str);

上記のように振る舞いを記載。

これで動作するはするんですが、実はHTMLのサニタイズができてません。
なんで <script> タグとか普通に動作します。
ここらは自前で実装なのかなと思いつつ、考えてみるとマークダウンのパースとHTMLタグのサニタイズって相容れにくい機能かなと思ったり。
片方はHTML化する機能だし、片方はHTMLを無効化する機能だし。

そりゃ僕も自前開発に挫折するわけです。
(いいわけ)

で、サニタイズ部分を追加で実装し、リリースいたしました。
現在、絶賛利用中で特に不具合もなく。
cebe/markdown、さすがでございます。

そして、なんだか見た目がリッチな感じになると、ぜんぜん大したこと書いてない自分の文章でもキラキラしてみえていいっすよねえ。
(がんばりなさいよ)

ちなみにこちらのライブラリ、ライセンス的にも MIT License なので大変、利用させていただきやすいかと。

作者さまに感謝させていただきつつ、利用させていただいております。
ありがとうございます。

この記事が気に入ったら、サポートをしてみませんか?
気軽にクリエイターの支援と、記事のオススメができます!
たぶんあなたの5倍は僕の方が好きです(きもいわ
2
はたしてシステムで人は救えるのだろうか? http://bierceline.net/ そんな哲学的なことを考えつつ "ロバミミ" という一人ブレストツールを作っています http://robamimi.net
コメントを投稿するには、 ログイン または 会員登録 をする必要があります。