PHPでhtmlタグからMarkdown形式に変換する



記事を書いたり、ドキュメントを作成する際に、
Markdown形式で記述するケースが増え、ライブラリやエディターが充実してきました。

通常、Markdown形式からHtmlタグに変換するのですが、
その逆の" HTML -> Markdown "はググッても" Markdown -> HTML "の情報ばかりヒットします。

そんな数少ないHTMLからMarkdown形式に変換出来るライブラリが
html-to-markdownです。( PHPで動作します )


それでは少し試してみましょう!


インストール

インストールはcomposerを使って行います。

composer require league/html-to-markdown


基本的な使い方

使い方はとてもシンプルで、変換したいHTMLタグをconvert関数に入れるだけです。

require 'vendor/autoload.php';

use League\HTMLToMarkdown\HtmlConverter;


$converter = new HtmlConverter();

// e-govの法令データーをサンプルとして使いました
$html =
    '<DIV class="item"><B>1</B>
    この政令は、情報処理の高度化等に対処するための刑法等の一部を改正する法律(平成二十三年法律第七十四号)附則第一条第一号に掲げる規定の施行の日(平成二十四年六月二十二日)から施行する。
    </DIV>';

return $converter->convert($html);


Markdown形式に変換されたアウトプットが以下になります。
boldタグがきちんとMarkdown形式に変換されているのがわかりますね。

**1**  この政令は、情報処理の高度化等に対処するための刑法等の一部を改正する法律(平成二十三年法律第七十四号)附則第一条第一号に掲げる規定の施行の日(平成二十四年六月二十二日)から施行する。

 

通常の使い方だと上記の方法で問題ないのですが、spanタグとdivタグが
混ざっている環境だと、改行が掛かってしまい、思っているような結果が出力されません。

$html = '<span>SPANタグと!</span><div>DIVタグ!</div>';

return $converter->convert($html);

//output
SPANタグと!
DIVタグ!


そのような時はHTMLタグをエスケープ出来ます。

use League\HTMLToMarkdown\HtmlConverter;

// htmlタグをエスケープ
$converter = new HtmlConverter(['strip_tags' => true]);

$html = '<span>SPANタグと!</span><div>DIVタグ!</div>';

return $converter->convert($html);

// output
SPANタグと!DIVタグ!


その他にもオプションで、出力されるMarkdownタグをカスタマイズすることも可能です。

$converter = new HtmlConverter();
//イタリックタグのカスタマイズ
$converter->getConfig()->setOption('italic_style', '_');
//ボールドタグのカスタマイズ
$converter->getConfig()->setOption('bold_style', '__');

$html = '<em>イタリック</em> と <strong>ボールドタグ</strong>';

return $converter->convert($html); 

// output
_イタリック_ と __ボールドタグ__


Summary

HTMLタグからMarkdown形式に変換する必要がある場面は多くないですが、
必要になった際はゼヒ×2参考にしてください!

html-to-markdown

 

この記事のカテゴリ
プログラミング

この記事に付けられているタグ