"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني الحفاظ على علامات HTML عند استخراج العقد باستخدام DOMDocument الخاص بـ PHP؟

كيف يمكنني الحفاظ على علامات HTML عند استخراج العقد باستخدام DOMDocument الخاص بـ PHP؟

تم النشر بتاريخ 2024-12-22
تصفح:447

How Can I Preserve HTML Tags When Extracting Nodes Using PHP's DOMDocument?

مشكلات في استخراج عقد HTML باستخدام DOMDocument

مقدمة

يوفر DOMDocument، وهو فئة PHP، أسلوبًا مناسبًا للتحليل ومعالجة مستندات HTML. ومع ذلك، عند محاولة الاحتفاظ بعلامات HTML أثناء استخراج المحتوى، قد يواجه المستخدمون صعوبات. تتعمق هذه المقالة في المفهوم الأساسي لـ DOM وتقترح حلولاً لمواجهة هذا التحدي.

فهم DOM والعقد

يمثل DOMDocument مستندات HTML كأشجار هرمية من العقد. يمكن أن تحتوي كل عقدة على عقد فرعية، مما يشكل بنية معقدة. من المهم أن ندرك أن عناصر HTML، إلى جانب سماتها ومحتوياتها النصية، يتم تمثيلها جميعًا كعقد داخل مستند DOMDocument.

حل مشكلة الاحتفاظ بالعلامة

المقدمة نجح الكود في جلب عقدة DIV بمعرف "showContent". ومع ذلك، فإنه يقوم فقط باسترداد محتوى النص داخل DIV، باستثناء علامات HTML نفسها. وذلك لأن الكود يستخدم

$tag->nodeValue، الذي يستخرج النص فقط بدلاً من العقد الفعلية.

الحل: اجتياز العقد

للحفاظ على عقد HTML، تحتاج إلى اجتياز العقد الفرعية للعقدة المستهدفة. يعرض الكود أدناه هذا الأسلوب:

$dom = new DOMDocument(); @$dom->loadHTML($html); $xpath = DOMXPath الجديد($dom); $tags = $xpath->query('.//div[@id="showContent"]'); foreach ($tags كعلامة $) { صدى $dom->saveXML($tag); صدى '
';
$dom = new DOMDocument();
@$dom->loadHTML($html);

$xpath = new DOMXPath($dom);

$tags = $xpath->query('.//div[@id="showContent"]');
foreach ($tags as $tag) {
    echo $dom->saveXML($tag);
    echo '
'; }

استرداد معلومات محددة من HTML

إذا كنت تحتاج إلى معلومات محددة من مستند HTML، مثل الروابط من الجدول، فيمكنك تعديل استعلام XPath لتحديد العقد المناسبة. على سبيل المثال:

foreach ($div->getElementsByTagName('a') as $link) { صدى $dom->saveXML($link);
$dom = new DOMDocument();
@$dom->loadHTML($html);

$xpath = new DOMXPath($dom);

$tags = $xpath->query('.//div[@id="showContent"]');
foreach ($tags as $tag) {
    echo $dom->saveXML($tag);
    echo '
'; }

موارد إضافية لمزيد من المساعدة حول العمل مع DOMDocument، راجع الموارد التالية:

وثائق DOMDocument](https ://www.php.net/manual/en/class.domdocument.php)
  • [أسئلة وأجوبة على DOMDocument في Stack Overflow](https://stackoverflow.com/search?q=user:208809 DOM)
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3