CakePHP 4 で HTML To Markdown for PHP を使って HTML を Markdown に変換する方法
はじめに
昨日の「CakePHP 4 で Markdown を HTML に変換し behavior を使って効率的に保存するアイディア」では Markdown を HTML に変換するサンプルをご紹介しましたが、今日は逆に CakePHP 4 で HTML を Markdown に変換する方法をご紹介します。
- CakePHP
- 4.0.3
- HTML To Markdown for PHP
- 4.9.1
1. インストール
HTML To Markdown for PHP は README にある通り composer でインストールします。
> cd \path\to\cakephp4
> composer require league/html-to-markdown
- GitHub - thephpleague/html-to-markdown: Convert HTML to Markdown with PHP
- https://github.com/thephpleague/html-to-markdown
2. 実装方法
公式の README を参考にしてコントローラに実装しました。
/src/Controller/SampleController.php
<?php
declare(strict_types=1);
namespace App\Controller;
use League\HTMLToMarkdown\HtmlConverter; // ← 追加
class SampleController extends AppController
{
public function index()
{
$converter = new HtmlConverter();
$html = "<h1>こんにちは、世界!</h1>\n"
. "<h2>Hello, world</h2>\n"
. "<p>これはサンプルです</p>\n";
$markdown = $converter->convert($html);
debug($markdown);
exit;
}
}
3. <h1>、<h2> を #、## にする
先の紹介したサンプルの実行結果は下記になります。
こんにちは、世界!
=========
Hello, world
------------
これはサンプルです
<h1>、<h2> を #、## に変換するには header_style オプションを追加します。
/src/Controller/SampleController.php
public function index()
{
$converter = new HtmlConverter(['header_style' => 'atx']); ← 変更
...
}
# こんにちは、世界!
## Hello, world
これはサンプルです
- Style notes (Convert HTML to Markdown with PHP)
- https://github.com/thephpleague/html-to-markdown#style-notes
5. おわりに
今日ご紹介した方法は、既存の CMS や ブログ で投稿された HTML を Markdown にコンバートするのに使えそうです。
Html to markdown には他にもオプションがあり、公式ドキュメントで紹介されています。英語なのでちょっと敷居が高いかもしれませんが、簡潔に説明されていますので興味のある方にはご確認いただければと思います。