أفضل أدوات تحليل HTML/XML في PHP: دليل شامل للمطورين

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

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

ابدأ الدورة
\n

كيف تقوم بتحليل HTML/XML في PHP؟ مقارنة شاملة توفر عليك ساعات من العمل

\n

هل سبق لك أن واجهت مهمة استخراج بيانات من موقع آخر أو تحليل ملف XML معقد؟ إذا كان الأمر كذلك، فأنت تعلم كيف يتحول التحليل "اليدوي" باستخدام strpos() و explode() بسرعة إلى كابوس. خطأ واحد في وسم (tag) وكل شيء ينهار. الخبر السار: PHP توفر عدة حلول قوية وأنيقة. الخبر السيء: من السهل أن تحتار في أي منها تختار. في هذا المقال، سنشرح بالتفصيل جميع الطرق الأساسية لتحليل HTML وXML في PHP، ونقارن أداءها وسهولة استخدامها، وستعرف أخيراً أي أداة تستخدمها في مشاريعك.

\n\n

لماذا لا يجب أن تكتب محللاً خاصاً بك من الصفر؟

\n

أول ما يفكر فيه المبتدئ هو كتابة محلل خاص به باستخدام التعبيرات المنتظمة (Regular Expressions). نعم، لمهمة لمرة واحدة مع HTML مثالي، قد ينجح هذا. ولكن بمجرد ظهور وسوم متداخلة، تعليقات، أو HTML غير صالح (وهو 90% من الحالات في العالم الحقيقي)، تفشل التعبيرات المنتظمة. بدلاً من إضاعة الوقت في تصحيح عشرات الأنماط، استخدم المكتبات الجاهزة. لقد قامت بحل جميع المشاكل نيابة عنك.

\n\n

الطريقة الأولى: DOMDocument — "المدفعية الثقيلة" لتحليل HTML

\n

DOMDocument هي إضافة مدمجة في PHP تقوم ببناء شجرة DOM كاملة للمستند. قوتها العظمى هي القدرة على التعامل مع HTML غير المنتظم. كل ما عليك فعله هو تمرير النص لها، وهي تحاول تصحيحه. مثالية لتحليل صفحات الويب الحقيقية.

\n

إليك مثالاً كلاسيكياً: استخراج جميع الروابط من HTML.

\n
<?php\n$html = '<a href="https://pythonlib.ru">PythonLib</a>\n        <a href="https://php.net">PHP.net</a>';\n\n$dom = new DOMDocument();\n// إخفاء أخطاء تحليل HTML غير الصالح\nlibxml_use_internal_errors(true);\n$dom->loadHTML($html);\nlibxml_clear_errors();\n\n$xpath = new DOMXPath($dom);\n$links = $xpath->query('//a/@href');\n\nforeach ($links as $link) {\n    echo $link->nodeValue . "\\n";\n}\n?>
\n

المميزات:

\n
    \n
  • تعمل مع أي HTML، حتى المكسور.
  • \n
  • دعم كامل لـ XPath — يمكنك عمل استعلامات معقدة.
  • \n
  • مدمجة في PHP، لا تحتاج إلى تثبيت.
  • \n
\n

العيوب:

\n
    \n
  • تستهلك ذاكرة كبيرة مع المستندات الضخمة.
  • \n
  • أبطأ من البدائل في المهام البسيطة.
  • \n
  • واجهة برمجة غير مريحة لاستخراج البيانات البسيط.
  • \n
\n\n

الطريقة الثانية: SimpleXML — الخفة والأناقة لتحليل XML

\n

إذا كنت تعمل مع XML صالح مسبقاً (مثل RSS feeds، استجابات API، ملفات الإعدادات)، فإن SimpleXML هو أفضل صديق لك. فهو يحول XML إلى كائن، يمكن الوصول إلى عناصره كخصائص، وإلى سماته كعناصر مصفوفة.

\n

مثال لتحليل RSS feed:

\n
<?php\n$xml = '<rss>\n    <channel>\n        <item>\n            <title>خبر 1</title>\n            <link>https://example.com/1</link>\n        </item>\n        <item>\n            <title>خبر 2</title>\n            <link>https://example.com/2</link>\n        </item>\n    </channel>\n</rss>';\n\n$feed = simplexml_load_string($xml);\n\nforeach ($feed->channel->item as $item) {\n    echo $item->title . ': ' . $item->link . "\\n";\n}\n?>
\n

المميزات:

\n
    \n
  • صيغة بسيطة وبديهية بشكل لا يصدق.
  • \n
  • استهلاك ضئيل للذاكرة.
  • \n
  • مناسبة جداً لقراءة ملفات الإعدادات.
  • \n
\n

العيوب:

\n
    \n
  • لا تعمل مع HTML غير الصالح.
  • \n
  • صعوبة إضافة أو تعديل العقد.
  • \n
  • لا تدعم XPath (على الرغم من وجود SimpleXMLE).
  • \n
\n

المدونات

توصيات الكتب