league/commonmark เป็นตัวแยกวิเคราะห์ PHP Markdown ที่ขยายได้สูง สร้างขึ้นโดย Colin O'Dell ซึ่งรองรับข้อมูลจำเพาะ CommonMark เต็มรูปแบบและ Markdown ที่ปรุงด้วย GitHub ขึ้นอยู่กับการใช้งานอ้างอิง CommonMark JS โดย John MacFarlane (@jgm)
โปรเจ็กต์นี้ต้องการ PHP 7.4 หรือสูงกว่าพร้อมส่วนขยาย mbstring
หากต้องการติดตั้งผ่าน Composer เพียงเรียกใช้:
$ ผู้แต่งต้องการ league/commonmark
คลาส CommonMarkConverter
จัดเตรียม wrapper อย่างง่ายสำหรับการแปลง CommonMark เป็น HTML:
ใช้ LeagueCommonMarkCommonMarkConverter;$converter = new CommonMarkConverter(['html_input' => 'strip','allow_unsafe_links' => false, ]);echo $converter->convert('# Hello World!');// <h1>Hello World!</h1>
หรือถ้าคุณต้องการ GitHub-Flavored Markdown ให้ใช้คลาส GithubFlavoredMarkdownConverter
แทน:
ใช้ LeagueCommonMarkGithubFlavoredMarkdownConverter;$converter = new GithubFlavoredMarkdownConverter(['html_input' => 'strip','allow_unsafe_links' => false, ]);echo $converter->convert('# Hello World!');// <h1>Hello World!</h1>
โปรดทราบว่ารองรับเฉพาะการเข้ารหัส UTF-8 และ ASCII เท่านั้น หาก Markdown ของคุณใช้การเข้ารหัสอื่น โปรดแปลงเป็น UTF-8 ก่อนที่จะเรียกใช้ผ่านไลบรารีนี้
คำเตือน
หากคุณจะแยกวิเคราะห์อินพุตที่ไม่น่าเชื่อถือจากผู้ใช้ โปรดพิจารณาตั้งค่าตัวเลือก html_input
และ allow_unsafe_links
ตามตัวอย่างด้านบน ดู https://commonmark.thephpleague.com/security/ สำหรับรายละเอียดเพิ่มเติม หากคุณเลือกที่จะอนุญาตอินพุต HTML แบบดิบจากผู้ใช้ที่ไม่น่าเชื่อถือด้วย ให้พิจารณาใช้ไลบรารี (เช่น โปรแกรมกรอง HTML) เพื่อให้การกรอง HTML เพิ่มเติม
เอกสารฉบับเต็มเกี่ยวกับการใช้งานขั้นสูง การกำหนดค่า และการปรับแต่งสามารถดูได้ที่ commonmark.thephpleague.com
ข้อมูลเกี่ยวกับวิธีการอัปเกรดไลบรารีนี้เป็นเวอร์ชันใหม่กว่าสามารถดูได้ที่ https://commonmark.thephleague.com/releases
GithubFlavoredMarkdownConverter
ที่แสดงก่อนหน้านี้เป็นการแทนที่แบบดรอปอินสำหรับ CommonMarkConverter
ซึ่งเพิ่มคุณสมบัติเพิ่มเติมที่พบในข้อมูลจำเพาะ GFM:
ลิงก์อัตโนมัติ
HTML ดิบที่ไม่ได้รับอนุญาต
ขีดทับ
ตาราง
รายการงาน
ดูเอกสารประกอบส่วนขยายสำหรับรายละเอียดเพิ่มเติมเกี่ยวกับวิธีการรวมเฉพาะคุณลักษณะ GFM บางอย่าง หากคุณไม่ต้องการทั้งหมด
เค้ก PHP3
ดรูปัล
ลาราเวล 4+
สกัลพิน
ซิมโฟนี 2 และ 3
ซิมโฟนี 4
ส่วนขยายทวิกมาร์กดาวน์
ตัวกรองทวิกและแท็ก
บล็อก Laravel CommonMark
ดูเอกสารส่วนขยายของเราสำหรับรายการส่วนขยายทั้งหมดที่มาพร้อมกับไลบรารีนี้
ตัวแยกวิเคราะห์/ตัวเรนเดอร์แบบกำหนดเองสามารถรวมเข้ากับส่วนขยายที่ขยาย CommonMark ได้ นี่คือบางส่วนที่คุณอาจพบว่าน่าสนใจ:
ส่วนขยาย Emoji - ส่วนขยายอีโมจิ UTF-8 พร้อมแท็ก Github
ส่วนขยาย Sup Sub - เพิ่มการรองรับตัวยกและตัวห้อย (แท็ก HTML <sup>
และ <sub>
)
ส่วนขยาย iframe ของ YouTube - แทนที่ลิงก์ youtube ด้วย iframe
ส่วนขยายรูปภาพ Lazy - เพิ่มตัวเลือกต่างๆ สำหรับการโหลดรูปภาพแบบ Lazy
ส่วนขยายเครื่องหมาย - เพิ่มการสนับสนุนข้อความที่เน้นสี (แท็ก <mark>
HTML)
สามารถดูรายการอื่นๆ ได้ใน Packagist ภายใต้ประเภทแพ็คเกจ commonmark-extension
หากคุณสร้างเอง โปรดส่ง PR เพื่อเพิ่มลงในรายการนี้ได้เลย!
ลองดูสิ่งดีๆ อื่นๆ ที่ผู้คนทำกับ league/commonmark
: https://packagist.org/packages/league/commonmark/dependents
มีการติดตาม SemVer อย่างใกล้ชิด การเผยแพร่รองและแพทช์ไม่ควรทำให้เกิดการเปลี่ยนแปลงที่สำคัญกับโค้ดเบส อย่างไรก็ตาม อาจเปลี่ยนเอาต์พุต AST หรือ HTML ที่เป็นผลลัพธ์ของ Markdown ที่แยกวิเคราะห์ (เนื่องจากการแก้ไขข้อบกพร่อง การเปลี่ยนแปลงข้อมูลจำเพาะ ฯลฯ) ด้วยเหตุนี้ คุณอาจได้รับ HTML ที่แตกต่างกันเล็กน้อย แต่โค้ดที่กำหนดเองใดๆ ที่สร้างในไลบรารีนี้ควรจะยังคงทำงานได้อย่างถูกต้อง
คลาสหรือเมธอดใดๆ ที่ทำเครื่องหมายว่า @internal
ไม่ได้มีไว้สำหรับใช้ภายนอกไลบรารีนี้ และอาจมีการเปลี่ยนแปลงได้ตลอดเวลา ดังนั้น โปรดหลีกเลี่ยงการใช้คลาสหรือเมธอดเหล่านั้น
เมื่อมีการเปิดตัวเวอร์ชัน รอง ใหม่ (เช่น 2.0
-> 2.1
) เวอร์ชันก่อนหน้า ( 2.0
) จะยังคงได้รับการรักษาความปลอดภัยและการแก้ไขข้อบกพร่องที่สำคัญเป็นเวลา อย่างน้อย 3 เดือน
เมื่อมีการเปิดตัวเวอร์ชัน หลัก ใหม่ (เช่น 1.6
-> 2.0
) เวอร์ชันก่อนหน้า ( 1.6
) จะได้รับการแก้ไขข้อบกพร่องที่สำคัญเป็นเวลา อย่างน้อย 3 เดือนและการอัปเดตความปลอดภัยเป็นเวลา 6 เดือนหลังจากการเปิดตัวใหม่นั้นออกมา
(นโยบายนี้อาจเปลี่ยนแปลงได้ในอนาคตและอาจมีข้อยกเว้นเป็นรายกรณี)
การสนับสนุนระดับมืออาชีพ รวมถึงการแจ้งเตือนการออกใหม่และการอัปเดตความปลอดภัย มีให้บริการผ่านการสมัครสมาชิก Tidelift
หากต้องการรายงานช่องโหว่ด้านความปลอดภัย โปรดใช้ผู้ติดต่อด้านความปลอดภัยของ Tidelift Tidelift จะประสานงานการแก้ไขและเปิดเผยข้อมูลกับเรา
หากคุณพบจุดบกพร่องในข้อมูลจำเพาะ โปรดรายงานไปที่โครงการ CommonMark การแก้ไขใดๆ ที่เกิดขึ้นจะถูกนำไปใช้ในโปรเจ็กต์นี้ในที่สุดเช่นกัน
ยินดีให้ การสนับสนุนห้องสมุดแห่งนี้ โดยเฉพาะอย่างยิ่งที่:
ปรับปรุงการใช้งานหรือความยืดหยุ่นโดยไม่กระทบต่อความสามารถของเราในการปฏิบัติตามข้อกำหนดของ CommonMark
การแก้ไขมิเรอร์ที่เกิดขึ้นกับการใช้งานอ้างอิง
เพิ่มประสิทธิภาพการทำงาน
แก้ไขปัญหาการปฏิบัติตามข้อกำหนด CommonMark
ควรหลีกเลี่ยงการปรับโครงสร้างใหม่ที่สำคัญต่อตรรกะการแยกวิเคราะห์หลักหากเป็นไปได้ เพื่อให้เราสามารถติดตามการอัปเดตที่ทำกับการใช้งานอ้างอิงได้อย่างง่ายดาย ดังที่กล่าวไปแล้ว เราจะพิจารณาการเปลี่ยนแปลงที่ไม่เบี่ยงเบนไปจากข้อมูลจำเพาะอ้างอิงมากเกินไปหรือได้รับการสนับสนุนจากการใช้งาน CommonMark ยอดนิยมอื่นๆ อย่างแน่นอน
โปรดดูการมีส่วนร่วมสำหรับรายละเอียดเพิ่มเติม
การทดสอบผู้แต่ง $
นอกจากนี้ยังจะทดสอบลีก/ทั่วไปกับสเป็คล่าสุดที่รองรับอีกด้วย
คุณสามารถเปรียบเทียบประสิทธิภาพของ ลีก/คอมมอนมาร์ก กับพาร์เซอร์ยอดนิยมอื่นๆ ได้โดยการใช้เครื่องมือวัดประสิทธิภาพที่มีให้:
$ ./tests/benchmark/benchmark.php
โค้ดนี้เดิมมีพื้นฐานมาจากการใช้งานอ้างอิง CommonMark JS ซึ่งเขียน ดูแลรักษา และจดลิขสิทธิ์โดย John MacFarlane โครงการนี้คงอยู่ไม่ได้หากไม่มีงานของเขา
และขอขอบคุณอย่างยิ่งต่อผู้มีส่วนร่วมที่น่าทึ่งของเราทุกคน:
นอกจากนี้เรายังอยากจะแสดงความขอบคุณอย่างจริงใจต่อผู้สนับสนุนต่อไปนี้ที่สนับสนุนการพัฒนาอย่างต่อเนื่องของโครงการนี้:
Tidelift สำหรับการให้การสนับสนุนทั้งผู้ดูแลและผู้ใช้ปลายทางผ่านโปรแกรมการสนับสนุนอย่างมืออาชีพ
Blackfire สำหรับการสมัครสมาชิก Open-Source Profiler
JetBrains สำหรับการสนับสนุนโครงการนี้ด้วยใบอนุญาต PhpStorm ฟรี
คุณสนใจที่จะสนับสนุนการพัฒนาโครงการนี้หรือไม่? ดู https://www.colinodell.com/sponsor สำหรับรายการวิธีการมีส่วนร่วม
league/commonmark ได้รับอนุญาตภายใต้ใบอนุญาต BSD-3 ดูไฟล์ LICENSE
สำหรับรายละเอียดเพิ่มเติม
โปรเจ็กต์นี้ดูแลโดย Colin O'Dell เป็นหลัก สมาชิกของทีมผู้นำลีก PHP อาจช่วยเหลือหน้าที่เหล่านี้เป็นครั้งคราว
โปรเจ็กต์นี้ใช้งานโดย Drupal, Laravel Framework, Cachet, Firefly III, Neos, Daux.io และอีกมากมาย!
รับการสนับสนุนอย่างมืออาชีพสำหรับลีก/คอมมอนมาร์คด้วยการสมัครสมาชิก Tidelift
Tidelift ช่วยทำให้โอเพ่นซอร์สมีความยั่งยืนสำหรับผู้ดูแลในขณะเดียวกันก็มอบให้แก่บริษัทต่างๆ
การรับประกันเกี่ยวกับการรักษาความปลอดภัย การบำรุงรักษา และการออกใบอนุญาตสำหรับการพึ่งพา