العمل مع Markdown في PHP: نظرة عامة على المكتبات والأدوات
\n\nMarkdown هي لغة ترميز خفيفة تسمح بإنشاء نص منسق باستخدام بناء جملة بسيط. في PHP، توجد عدة مكتبات ناضجة وموثوقة لمعالجة Markdown. في هذه المقالة، سنستعرض ثلاث أدوات شائعة: Parsedown وPHP-Markdown وLeague/CommonMark.
\n\n1. Parsedown — محلل خفيف وسريع
\n\nParsedown هي واحدة من أشهر المكتبات للعمل مع Markdown في PHP. لا تتطلب تبعيات خارجية، وتدعم جميع عناصر الترميز الأساسية، وتعمل بسرعة كبيرة.
\n\nالتثبيت
\ncomposer require erusev/parsedown\n\nالاستخدام الأساسي
\n<?php\nrequire 'vendor/autoload.php';\n\n$Parsedown = new Parsedown();\n\n$markdown = <<<MARKDOWN\n# عنوان المستوى الأول\n\nهذا **نص غامق** و*مائل*.\n\n- عنصر قائمة 1\n- عنصر قائمة 2\n\n[رابط إلى PythonLib](https://pythonlib.ru)\nMARKDOWN;\n\necho $Parsedown->text($markdown);\n?>\n\nنتيجة تنفيذ هذا الكود هي HTML صحيح مع عناوين وقوائم وروابط.
\n\nإمكانيات إضافية
\n- \n
- دعم الوضع الآمن (إخفاء وسوم HTML) \n
- العمل مع القوائم المتداخلة والجداول \n
- التخصيص عبر الطرق
setBreaksEnabled()وsetMarkupEscaped()\n
2. PHP-Markdown — الحل الكلاسيكي
\n\nPHP-Markdown هو التطبيق الأصلي لمحلل Markdown من Michel Fortin، المستند إلى إصدار Perl لجون غروبر. تتبع هذه المكتبة بدقة مواصفات Markdown.
\n\nالتثبيت
\ncomposer require michelf/php-markdown\n\nمثال على الاستخدام
\n<?php\nrequire 'vendor/autoload.php';\n\nuse Michelf\\Markdown;\n\n$markdown = <<<MARKDOWN\n## عنوان المستوى الثاني\n\n> هذا اقتباس.\n> يمكن أن يكون متعدد الأسطر.\n\n1. العنصر الأول في القائمة المرقمة\n2. العنصر الثاني\n\n`كود مضمن` وكتلة كود:\n\n <?php\n echo "Hello, World!";\n ?>\nMARKDOWN;\n\n$html = Markdown::defaultTransform($markdown);\necho $html;\n?>\n\nالميزات
\n- \n
- دعم بناء الجملة الموسع عبر MarkdownExtra \n
- تحويل تلقائي للروابط وعناوين البريد الإلكتروني \n
- إمكانية تعطيل HTML في المخرجات \n
3. League/CommonMark — تطبيق موحد
\n\nLeague/CommonMark هي مكتبة تنفذ المعيار الرسمي CommonMark. تضمن أقصى توافق مع المحللات الأخرى وتدعم الإضافات.
\n\nالتثبيت
\ncomposer require league/commonmark\n\nمثال مع الإضافات
\n<?php\nrequire 'vendor/autoload.php';\n\nuse League\\CommonMark\\Environment\\Environment;\nuse League\\CommonMark\\Extension\\CommonMark\\CommonMarkCoreExtension;\nuse League\\CommonMark\\MarkdownConverter;\n\n// إنشاء بيئة مع الإضافات الأساسية\n$environment = new Environment();\n$environment->addExtension(new CommonMarkCoreExtension());\n\n$converter = new MarkdownConverter($environment);\n\n$markdown = <<<MARKDOWN\n| جدول | عمود 1 | عمود 2 |\n|---------|-----------|-----------|\n| صف 1| قيمة | قيمة |\n| صف 2| قيمة | قيمة |\n\n~~نص مشطوب~~ و==نص مميز== (GFM).\nMARKDOWN;\n\necho $converter->convert($markdown)->getContent();\n?>\n\nإضافات إضافية
\n- \n
- Table — دعم الجداول \n
- Strikethrough — نص مشطوب \n
- TaskList — مربعات الاختيار \n
- Autolink — روابط تلقائية \n