حذف عناصر الطفل بشكل صحيح في PHP باستخدام DomDocument و DomxPath
-
26-09-2019 - |
سؤال
كان هذا سؤالًا آخر سابقًا ، لكننا لن نتحدث عن ذلك. أعزل عددًا من الأقسام في وثيقة HTML من طرف ثالث. عند مطابقة بعض ، أحتاج إلى إزالة علامات معينة من النتيجة. الرمز الذي وجدته لهذا هو: كان:
$name = $xpath->query("//div[@class='leftColBig']//h3")->item(0);
// remove <span>
foreach($xpath->query("//span", $name) as $node)
$node->parentNode->removeChild($node);
هذا له تأثير جانبي مؤسف ليس فقط حذف الطفل من اسم $ ، ولكن DomDocument بأكمله :( كيف يمكنني عزل الإزالة فقط إلى القسم الذي وجدته باستخدام الاستعلام.
المحلول
بدلاً من:
$xpath->query("//span", $name)
يفعل:
$xpath->query("span", $name)
//nodename
يطابق جميع العقد بغض النظر عن الوالدين. يتم تجاهل ContextNode $ عندما يبدأ استعلامك بـ //
.
لا تنتمي إلى StackOverflow