Ich versuche p
Tags mit data-spotid
AttributeDomDocument removeChild in foreach reindexing den dom
$dom = new DOMDocument();
@$dom->loadHTML($description);
$pTag = $dom->getElementsByTagName('p');
foreach ($pTag as $value) {
/** @var DOMElement $value */
$id = $value->getAttribute('data-spotid');
if ($id) {
$value->parentNode->removeChild($value);
}
}
aber zu löschen, wenn ich Kind bin Entfernen sie den dom sind reindexing. Ich nehme an, ich habe 8 Items, die ich gelöscht habe, 1. es wird es neu indizieren und das zweite Element wird 1. und es wird nicht gelöscht, es wird auf 2. gehen, das jetzt 3. Element ist.
Ich glaube nicht, "Reindex" ist der richtige Begriff. Es hört sich so an, als ob der Foreach-Iterator nicht in der Lage ist, sich selbst sozusagen zurückzuspulen, um immer auf dem aktuellsten Punkt in der Schleife zu sein, wenn diese Schleife manipuliert wird. Es könnte also ein allgemeineres Bezugsproblem sein als etwas, das für "DomDocument" spezifisch ist. – Anthony
Scheint, als ob mein Vorgefühl etwas Verdienst hat: http://php.net/manual/en/domnode.removechild.php#90292 – Anthony
Sie können ['iterator_to_array ($ pTag)'] (https: //secure.php. net/manual/function.iterator-to-array.php). Demo: https://3v4l.org/ieN3X – Yoshi