معالجة وتحليل Markdown في PHP: المكتبات والأدوات

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

العمل مع Markdown في PHP: المكتبات والأدوات



Markdown هي لغة ترميز خفيفة تم إنشاؤها لتنسيق النص بسرعة دون الحاجة إلى كتابة HTML معقد. في بوابة التعليم PythonLib، نواجه غالبًا مهمة تحويل ترميز Markdown إلى HTML نقي لعرض المقالات والوثائق والتعليقات. PHP، كلغة خادم، تقدم عدة حلول ناضجة لهذه المهمة. في هذه المقالة، سنستعرض المكتبات الثلاث الأكثر شيوعًا، وطريقة تثبيتها، واستخدامها الأساسي، وميزاتها.



لماذا نحتاج إلى محلل Markdown في PHP؟

Markdown مناسب لكتّاب المحتوى، لكن المتصفحات لا تفهمه مباشرة. لذلك، يجب تحويل Markdown إلى HTML على الخادم. المزايا الإضافية لاستخدام المكتبات:

  • الأمان: معالجة صحيحة لوسوم HTML ومنع هجمات XSS.
  • المرونة: دعم الإضافات (الجداول، الحواشي، الصيغ الرياضية).
  • الأداء: تخزين النتائج مؤقتًا وتحويل سريع.


1. Parsedown — الأبسط والأسرع

Parsedown هي مكتبة ذات فئة واحدة لا تتطلب تبعيات. إنها مثالية للمشاريع الصغيرة والمبتدئين.



التثبيت

composer require erusev/parsedown


مثال على الاستخدام

<?phprequire_once 'vendor/autoload.php';

$Parsedown = new Parsedown();$markdown = "# عنوان

هذا نص **عريض** و *مائل*.";$html = $Parsedown->text($markdown);echo $html;?>

النتيجة: HTML صحيح مع وسوم <h1> و <strong> و <em>. يقوم Parsedown تلقائيًا بتعقيم وسوم HTML الخطرة إذا لم تكن جزءًا من ترميز Markdown.



إعداد الوضع الآمن

$Parsedown->setSafeMode(true); // تعطيل HTML في Markdown


2. League/CommonMark — التوافق مع المعيار

مكتبة من The PHP League تنفذ المعيار الرسمي CommonMark. تدعم الإضافات (الجداول، النص المشطوب) وتتبع المواصفات بدقة.



التثبيت

composer require league/commonmark


الاستخدام الأساسي

<?phpuse League\\CommonMark\\Environment\\Environment;use League\\CommonMark\\Extension\\CommonMark\\CommonMarkCoreExtension;use League\\CommonMark\\MarkdownConverter;

$environment = new Environment();$environment->addExtension(new CommonMarkCoreExtension());$converter = new MarkdownConverter($environment);

$markdown = "| جدول | عمود ||---------|---------|| خلية 1 | خلية 2 |";$html = $converter->convert($markdown);echo $html;?>


الإمكانيات المتقدمة

يمكنك إضافة إضافات إضافية:

use League\\CommonMark\\Extension\\Table\\TableExtension;use League\\CommonMark\\Extension\\Strikethrough\\StrikethroughExtension;

$environment->addExtension(new TableExtension());$environment->addExtension(new StrikethroughExtension());

هذا يسمح بمعالجة الجداول والنص المشطوب (~~نص~~).



3. cebe/markdown — بديل خفيف

مكتبة cebe/markdown من Carsten Brandt تتميز بالوحداتية. يمكنك استخدام المحللات التي تحتاجها فقط (مثل القوائم أو العناوين فقط).



التثبيت

composer require cebe/markdown


مثال مع محلل MarkdownExtra

<?phpuse cebe\\markdown\\MarkdownExtra                    

توصيات