تحليل HTML في PHP: نظرة عامة على المكتبات والأدوات

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

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

ابدأ الدورة

تحليل HTML في PHP: نظرة عامة على المكتبات والأدوات



تحليل HTML هي إحدى المهام الشائعة لمطور الويب. سواء كان استخراج البيانات من موقع آخر (scraping)، أو تحليل صفحاتك الخاصة، أو أتمتة الاختبار - لا يمكن الاستغناء عن أداة موثوقة. توفر PHP، كلغة خادم، عدة طرق للعمل مع كود HTML. في هذه المقالة، سنستعرض ثلاث مكتبات الأكثر شهرة: PHP Simple HTML DOM Parser و DiDOM و Symfony DomCrawler. ستتعرف على إمكانياتها، نقاط القوة والضعف، وسترى أمثلة على الكود.



لماذا نحتاج إلى تحليل HTML؟

الدوال المضمنة في PHP (file_get_contents، preg_match) بدائية جدًا للمهام المعقدة. سرعان ما تصبح التعبيرات المنتظمة ضخمة وتتعطل عند أدنى تغيير في بنية HTML. تتيح المكتبات المتخصصة ما يلي:

  • الوصول إلى العناصر عبر محددات CSS أو XPath؛
  • التنقل في شجرة DOM كما في JavaScript؛
  • استخراج النصوص، السمات، الروابط؛
  • تعديل HTML وحفظ النتيجة.


1. PHP Simple HTML DOM Parser

واحدة من أقدم وأشهر المكتبات. تعمل بدون تبعيات خارجية، مناسبة لـ PHP 5.6+. ميزتها الرئيسية هي بناء الجملة البديهي الذي يشبه jQuery.



التثبيت

// قم بتنزيل ملف simple_html_dom.php من GitHubrequire_once 'simple_html_dom.php';


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

// إنشاء كائن DOM من URL$html = file_get_html('https://example.com');

// البحث عن جميع الروابطforeach($html->find('a') as $link) { echo $link->href . ' - ' . $link->plaintext . "";}

// استخراج عنوان h1$h1 = $html->find('h1', 0);echo $h1 ? $h1->plaintext : 'العنوان غير موجود';

// تنظيف الذاكرة$html->clear();


الإيجابيات والسلبيات

  • + البساطة وواجهة برمجة تطبيقات واضحة؛
  • + لا يتطلب Composer؛
  • - أداء بطيء مع المستندات الكبيرة؛
  • - المشروع لم يتم تحديثه منذ فترة طويلة؛
  • - لا يدعم معايير PHP 8.x الحديثة بشكل كامل.


2. DiDOM

مكتبة حديثة، مدعومة بنشاط من المجتمع. متوافقة تمامًا مع PHP 7.4–8.3. تستخدم محددات CSS و XPath، وتعمل أسرع بعدة مرات من Simple HTML DOM.



التثبيت عبر Composer

composer require imangazaliev/didom


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

use DiDom\\Document;

$document = new Document('https://example.com', true);

// البحث عن جميع الروابط$links = $document->find('a');foreach ($links as $link) { echo $link->attr('href') . "";}

// البحث حسب الفئة$items = $document->find('.product-title');foreach ($items as $item) { echo $item->text() . "";}

// استخراج العنصر الأول$firstTitle = $document->first('h2');echo $firstTitle ? $firstTitle->text() : 'لا توجد عناوين';


الإيجابيات والسلبيات

  • + أداء عالٍ؛
  • + دعم محددات CSS بأي تعقيد؛
  • + التعامل مع الترميزات؛
  • - يتطلب Composer؛
  • - الوثائق باللغة الروسية موجودة ولكنها مجزأة.


3. Symfony DomCrawler

جزء من نظام Symfony البيئي، ولكن يمكن استخدامه كمكتبة مستقلة. يوفر واجهة برمجة تطبيقات قوية للتنقل في DOM، واستخراج البيانات، والعمل مع النماذج.



التثبيت

composer require symfony/dom-crawlercomposer require symfony/css-selector  // لمحددات CSS


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

use Symfony\\Component\\DomCrawler\\Crawler;

$html = file_get_contents('https://example.com');$crawler = new Crawler($

توصيات