حذف عناصر الطفل بشكل صحيح في PHP باستخدام DomDocument و DomxPath

StackOverflow https://stackoverflow.com/questions/4218308

سؤال

كان هذا سؤالًا آخر سابقًا ، لكننا لن نتحدث عن ذلك. أعزل عددًا من الأقسام في وثيقة 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 $ عندما يبدأ استعلامك بـ //.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top