league/commonmark adalah parser PHP Markdown yang sangat dapat diperluas yang dibuat oleh Colin O'Dell yang mendukung spesifikasi penuh CommonMark dan GitHub-Flavored Markdown. Hal ini didasarkan pada implementasi referensi CommonMark JS oleh John MacFarlane (@jgm).
Proyek ini memerlukan PHP 7.4 atau lebih tinggi dengan ekstensi mbstring
. Untuk menginstalnya melalui Composer cukup jalankan:
$ komposer memerlukan liga/commonmark
Kelas CommonMarkConverter
menyediakan pembungkus sederhana untuk mengonversi CommonMark ke HTML:
gunakan LeagueCommonMarkCommonMarkConverter;$converter = new CommonMarkConverter(['html_input' => 'strip','allow_unsafe_links' => false, ]);echo $converter->convert('# Halo Dunia!');// <h1>Halo Dunia!</h1>
Atau jika Anda ingin GitHub-Flavored Markdown, gunakan kelas GithubFlavoredMarkdownConverter
sebagai gantinya:
gunakan LeagueCommonMarkGithubFlavoredMarkdownConverter;$converter = new GithubFlavoredMarkdownConverter(['html_input' => 'strip','allow_unsafe_links' => false, ]);echo $converter->convert('# Halo Dunia!');// <h1>Halo Dunia!</h1>
Harap dicatat bahwa hanya pengkodean UTF-8 dan ASCII yang didukung. Jika Markdown Anda menggunakan pengkodean yang berbeda, harap konversikan ke UTF-8 sebelum menjalankannya melalui perpustakaan ini.
Peringatan
Jika Anda akan menguraikan masukan tidak tepercaya dari pengguna, harap pertimbangkan untuk menyetel opsi html_input
allow_unsafe_links
sesuai contoh di atas. Lihat https://commonmark.thephpleague.com/security/ untuk detail lebih lanjut. Jika Anda juga memilih untuk mengizinkan masukan HTML mentah dari pengguna yang tidak tepercaya, pertimbangkan untuk menggunakan perpustakaan (seperti HTML Purifier) untuk menyediakan pemfilteran HTML tambahan.
Dokumentasi lengkap tentang penggunaan lanjutan, konfigurasi, dan penyesuaian dapat ditemukan di commonmark.thephpleague.com.
Informasi tentang cara meningkatkan ke versi terbaru perpustakaan ini dapat ditemukan di https://commonmark.thephpleague.com/releases.
GithubFlavoredMarkdownConverter
yang ditunjukkan sebelumnya adalah pengganti CommonMarkConverter
yang menambahkan fitur tambahan yang ditemukan dalam spesifikasi GFM:
Tautan otomatis
HTML mentah tidak diizinkan
Dicoret
Tabel
Daftar Tugas
Lihat dokumentasi Ekstensi untuk detail selengkapnya tentang cara menyertakan hanya fitur GFM tertentu jika Anda tidak menginginkan semuanya.
KuePHP 3
Drupal
Laravel 4+
pematung
Simfoni 2 & 3
simfoni 4
Ekstensi penurunan harga ranting
Filter dan tag ranting
Blog Laravel CommonMark
Lihat dokumentasi ekstensi kami untuk daftar lengkap ekstensi yang disertakan dengan perpustakaan ini.
Pengurai/perender khusus dapat digabungkan ke dalam ekstensi yang memperluas CommonMark. Berikut beberapa yang mungkin menarik bagi Anda:
Ekstensi Emoji - Ekstensi emoji UTF-8 dengan tag Github.
Ekstensi Sub Sub - Menambahkan dukungan superskrip dan subskrip (tag HTML <sup>
dan <sub>
)
Ekstensi iframe YouTube - Mengganti tautan youtube dengan iframe.
Ekstensi Gambar Malas - Menambahkan berbagai opsi untuk pemuatan gambar yang lambat.
Ekstensi Penanda - Menambahkan dukungan teks yang disorot ( tag HTML <mark>
)
Lainnya dapat ditemukan di Packagist dengan tipe paket commonmark-extension
.
Jika Anda membuatnya sendiri, silakan kirimkan PR untuk menambahkannya ke daftar ini!
Lihat hal keren lainnya yang dilakukan orang-orang dengan league/commonmark
: https://packagist.org/packages/league/commonmark/dependents
SemVer diikuti dengan cermat. Rilis minor dan patch tidak boleh menimbulkan perubahan yang dapat menyebabkan gangguan pada basis kode; namun, mereka mungkin mengubah keluaran AST atau HTML yang dihasilkan dari Markdown yang diurai (karena perbaikan bug, perubahan spesifikasi, dll.) Akibatnya, Anda mungkin mendapatkan HTML yang sedikit berbeda, namun kode khusus apa pun yang dibangun di perpustakaan ini harus tetap berfungsi dengan benar.
Kelas atau metode apa pun yang ditandai @internal
tidak dimaksudkan untuk digunakan di luar perpustakaan ini dan dapat mengalami perubahan sewaktu-waktu, jadi harap hindari menggunakannya.
Ketika versi minor baru (misalnya 2.0
-> 2.1
) dirilis, versi sebelumnya ( 2.0
) akan terus menerima perbaikan keamanan dan bug penting selama minimal 3 bulan.
Ketika versi utama baru dirilis (misalnya 1.6
-> 2.0
), versi sebelumnya ( 1.6
) akan menerima perbaikan bug penting selama minimal 3 bulan dan pembaruan keamanan selama 6 bulan setelah rilis baru tersebut keluar.
(Kebijakan ini dapat berubah di masa mendatang dan pengecualian dapat dilakukan berdasarkan kasus per kasus.)
Dukungan profesional, termasuk pemberitahuan rilis baru dan pembaruan keamanan, tersedia melalui Langganan Tidelift.
Untuk melaporkan kerentanan keamanan, silakan gunakan kontak keamanan Tidelift. Tidelift akan mengoordinasikan perbaikan dan pengungkapan dengan kami.
Jika Anda menemukan bug pada spesifikasi, harap laporkan ke proyek CommonMark. Perbaikan apa pun yang dihasilkan pada akhirnya akan diterapkan dalam proyek ini juga.
Kontribusi pada perpustakaan ini sangat diharapkan , khususnya yang:
Tingkatkan kegunaan atau fleksibilitas tanpa mengurangi kemampuan kami untuk mematuhi spesifikasi CommonMark
Perbaikan cermin dilakukan pada implementasi referensi
Optimalkan kinerja
Perbaiki masalah terkait kepatuhan terhadap spesifikasi CommonMark
Pemfaktoran ulang besar-besaran pada logika parsing inti harus dihindari sebisa mungkin sehingga kita dapat dengan mudah mengikuti pembaruan yang dilakukan pada implementasi referensi. Oleh karena itu, kami akan mempertimbangkan perubahan yang tidak menyimpang terlalu jauh dari spesifikasi referensi atau yang disukai oleh implementasi CommonMark populer lainnya.
Silakan lihat KONTRIBUSI untuk rincian tambahan.
$ tes komposer
Ini juga akan menguji liga/commonmark terhadap spesifikasi terbaru yang didukung.
Anda dapat membandingkan kinerja league/commonmark dengan parser populer lainnya dengan menjalankan alat benchmark yang disertakan:
$./tests/benchmark/benchmark.php
Kode ini awalnya didasarkan pada implementasi referensi CommonMark JS yang ditulis, dikelola, dan dilindungi hak cipta oleh John MacFarlane. Proyek ini tidak akan ada tanpa karyanya.
Dan terima kasih yang sebesar-besarnya kepada semua kontributor kami yang luar biasa:
Kami juga ingin mengucapkan terima kasih yang sebesar-besarnya kepada para sponsor berikut yang mendukung pengembangan proyek ini:
Tidelift karena menawarkan dukungan kepada pengelola dan pengguna akhir melalui program dukungan profesional mereka
Blackfire karena menyediakan langganan Profiler Sumber Terbuka
JetBrains untuk mendukung proyek ini dengan lisensi PhpStorm gratis
Apakah Anda tertarik untuk mensponsori pengembangan proyek ini? Lihat https://www.colinodell.com/sponsor untuk daftar cara berkontribusi.
league/commonmark dilisensikan di bawah lisensi BSD-3. Lihat file LICENSE
untuk lebih jelasnya.
Proyek ini terutama dikelola oleh Colin O'Dell. Anggota Tim Kepemimpinan Liga PHP terkadang dapat membantu beberapa tugas ini.
Proyek ini digunakan oleh Drupal, Laravel Framework, Cachet, Firefly III, Neos, Daux.io, dan banyak lagi!
Dapatkan dukungan profesional untuk liga/commonmark dengan berlangganan Tidelift
Tidelift membantu menjadikan open source berkelanjutan bagi pengelola sekaligus memberi perusahaan
jaminan tentang keamanan, pemeliharaan, dan perizinan untuk dependensinya.