Perpustakaan yang mengubah HTML menjadi Markdown untuk kewarasan dan kenyamanan Anda.
Membutuhkan : PHP 7.2+
Pengembang Utama : @colinodel
Penulis Asli : @nickcernis
“Alkimia apa ini?” kamu bergumam. "Saya mengerti mengapa Anda mengonversi Markdown ke HTML," Anda melanjutkan, sudah menjawab pertanyaan, "tetapi mengapa harus sebaliknya?"
Biasanya Anda akan mengonversi HTML ke Markdown jika:
Memerlukan perpustakaan dengan mengeluarkan perintah ini:
composer require league/html-to-markdown
Tambahkan require 'vendor/autoload.php';
ke bagian atas skrip Anda.
Selanjutnya, buat instance HtmlConverter baru, dengan meneruskan kode HTML valid Anda ke fungsi convert()
:
use League HTMLToMarkdown HtmlConverter ;
$ converter = new HtmlConverter ();
$ html = " <h3>Quick, to the Batpoles!</h3> " ;
$ markdown = $ converter -> convert ( $ html );
Variabel $markdown
sekarang berisi versi Markdown HTML Anda sebagai string:
echo $ markdown ; / / == > ### Quick, to the Batpoles!
Direktori demo
yang disertakan berisi HTML->formulir konversi penurunan harga untuk dicoba.
Peringatan
Secara default, pustaka ini mempertahankan tag HTML tanpa padanan Markdown, seperti <span>
, <div>
, <iframe>
, <script>
, dll. Jika Anda akan menguraikan masukan tidak tepercaya dari pengguna, harap pertimbangkan untuk menyetel strip_tags
dan/atau remove_nodes
opsi yang didokumentasikan di bawah, dan juga menggunakan perpustakaan (seperti HTML Purifier) untuk menyediakan pemfilteran HTML tambahan.
Untuk menghapus tag HTML yang tidak memiliki padanan Markdown sambil mempertahankan konten di dalamnya, setel strip_tags
ke true, seperti ini:
$ converter = new HtmlConverter ( array ( ' strip_tags ' => true ));
$ html = ' <span>Turnips!</span> ' ;
$ markdown = $ converter -> convert ( $ html ); / / $ markdown now contains "Turnips!"
Atau lebih jelasnya seperti ini:
$ converter = new HtmlConverter ();
$ converter -> getConfig ()-> setOption ( ' strip_tags ' , true );
$ html = ' <span>Turnips!</span> ' ;
$ markdown = $ converter -> convert ( $ html ); / / $ markdown now contains "Turnips!"
Perhatikan bahwa hanya tag itu sendiri yang dihapus, bukan konten yang dimilikinya.
Untuk menghapus tag dan kontennya, berikan daftar tag yang dipisahkan spasi di remove_nodes
, seperti ini:
$ converter = new HtmlConverter ( array ( ' remove_nodes ' => ' span div ' ));
$ html = ' <span>Turnips!</span><div>Monkeys!</div> ' ;
$ markdown = $ converter -> convert ( $ html ); / / $ markdown now contains ""
Secara default, semua komentar dihapus dari konten. Untuk melestarikannya, gunakan opsi preserve_comments
, seperti ini:
$ converter = new HtmlConverter ( array ( ' preserve_comments ' => true ));
$ html = ' <span>Turnips!</span><!-- Monkeys! --> ' ;
$ markdown = $ converter -> convert ( $ html ); / / $ markdown now contains "Turnips!<!-- Monkeys! -->"
Untuk mempertahankan hanya komentar tertentu, setel preserve_comments
dengan array string, seperti ini:
$ converter = new HtmlConverter ( array ( ' preserve_comments ' => array ( ' Eggs! ' )));
$ html = ' <span>Turnips!</span><!-- Monkeys! --><!-- Eggs! --> ' ;
$ markdown = $ converter -> convert ( $ html ); / / $ markdown now contains "Turnips!<!-- Eggs! -->"
Secara default, tautan placeholder dipertahankan. Untuk menghapus tautan placeholder, gunakan opsi strip_placeholder_links
, seperti ini:
$ converter = new HtmlConverter ( array ( ' strip_placeholder_links ' => true ));
$ html = ' <a>Github</a> ' ;
$ markdown = $ converter -> convert ( $ html ); / / $ markdown now contains "Github"
Secara default, tag tebal dikonversi menggunakan sintaks asterisk, dan tag miring dikonversi menggunakan sintaks yang digarisbawahi. Ubah ini dengan menggunakan opsi bold_style
dan italic_style
.
$ converter = new HtmlConverter ();
$ converter -> getConfig ()-> setOption ( ' italic_style ' , ' * ' );
$ converter -> getConfig ()-> setOption ( ' bold_style ' , ' __ ' );
$ html = ' <em>Italic</em> and a <strong>bold</strong> ' ;
$ markdown = $ converter -> convert ( $ html ); / / $ markdown now contains "*Italic* and a __bold__"
Secara default, tag br
dikonversi menjadi dua spasi diikuti dengan karakter baris baru sesuai penurunan harga tradisional. Setel hard_break
ke true
untuk menghilangkan dua spasi, sesuai dengan GitHub Flavored Markdown (GFM).
$ converter = new HtmlConverter ();
$ html = ' <p>test<br>line break</p> ' ;
$ converter -> getConfig ()-> setOption ( ' hard_break ' , true );
$ markdown = $ converter -> convert ( $ html ); / / $ markdown now contains "test n line break"
$ converter -> getConfig ()-> setOption ( ' hard_break ' , false ); / / default
$ markdown = $ converter -> convert ( $ html ); / / $ markdown now contains "test n line break"
Secara default, tag a
dikonversi ke sintaks tautan yang paling mudah, yaitu jika tidak ada teks atau judul yang tersedia, maka sintaks <url>
akan digunakan daripada sintaksis [url](url)
lengkap. Setel use_autolinks
ke false
untuk mengubah perilaku ini agar selalu menggunakan sintaks tautan lengkap.
$ converter = new HtmlConverter ();
$ html = ' <p><a href="https://thephpleague.com">https://thephpleague.com</a></p> ' ;
$ converter -> getConfig ()-> setOption ( ' use_autolinks ' , true );
$ markdown = $ converter -> convert ( $ html ); / / $ markdown now contains "<https://thephpleague.com>"
$ converter -> getConfig ()-> setOption ( ' use_autolinks ' , false ); / / default
$ markdown = $ converter -> convert ( $ html ); / / $ markdown now contains "[https://thephpleague.com](https://thephpleague.com)"
Anda dapat meneruskan objek Environment
saat ini untuk menyesuaikan, yaitu konverter mana yang harus digunakan.
$ environment = new Environment ( array (
/ / your configuration here
));
$ environment -> addConverter ( new HeaderConverter ()); / / optionally - add converter manually
$ converter = new HtmlConverter ( $ environment );
$ html = ' <h3>Header</h3>
<img src="" />
' ;
$ markdown = $ converter -> convert ( $ html ); / / $markdown now contains " ### Header" and "<img src="" />"
Dukungan untuk tabel Markdown tidak diaktifkan secara default karena ini bukan bagian dari sintaks Markdown asli. Untuk menggunakan tabel, tambahkan konverter secara eksplisit:
use League HTMLToMarkdown HtmlConverter ;
use League HTMLToMarkdown Converter TableConverter ;
$ converter = new HtmlConverter ();
$ converter -> getEnvironment ()-> addConverter ( new TableConverter ());
$ html = " <table><tr><th>A</th></tr><tr><td>a</td></tr></table> " ;
$ markdown = $ converter -> convert ( $ html );
Header setext (yang digarisbawahi) adalah default untuk H1 dan H2. Jika Anda lebih menyukai gaya ATX untuk H1 dan H2 (# Header 1 dan ## Header 2), setel header_style
ke 'atx' dalam array opsi saat Anda membuat instance objek:
$converter = new HtmlConverter(array('header_style'=>'atx'));
Header dengan prioritas H3 ke bawah selalu menggunakan gaya atx.
Tautan dan gambar direferensikan sebaris. Referensi catatan kaki (di mana atribut gambar src dan jangkar href dicantumkan dalam catatan kaki) tidak digunakan.
Blockquote tidak dibungkus dengan baris – ini membuat Markdown yang dikonversi lebih mudah untuk diedit.
HTML To Markdown memerlukan ekstensi PHP xml, lib-xml, dan dom, yang semuanya diaktifkan secara default di sebagian besar distribusi.
Kesalahan seperti "Kesalahan fatal: Kelas 'DOMDocument' tidak ditemukan" pada distribusi seperti CentOS yang menonaktifkan ekstensi xml PHP dapat diatasi dengan menginstal php-xml.
Terima kasih banyak kepada semua kontributor sejauh ini. Perbaikan lebih lanjut dan saran fitur sangat kami harapkan.
HTML To Markdown membuat DOMDocument dari HTML yang disediakan, menelusuri pohon, dan mengonversi setiap node menjadi node teks yang berisi penurunan harga yang setara, dimulai dari node yang bersarang paling dalam dan bekerja ke dalam menuju node root.
style
).Gunakan salah satu perpustakaan hebat ini:
Namun, tidak ada jaminan tentang Peri.