removeChild с PHP DOM не работает - PullRequest
       21

removeChild с PHP DOM не работает

2 голосов
/ 09 октября 2011

У меня есть следующий код:

$doc = new DOMDocument();
$doc->loadHTML($quiz['value']);
$imageElement = $doc->getElementsByTagName('img')->item(0);
}
if(is_object($imageElement)){ 
    $image = $imageElement->getAttribute('src');
    $imageElement->parentNode->removeChild($imageElement); 
}else{ 
    $image = '#'; 
}
$quiz['value'] = $doc->saveHTML();

Однако я получаю следующую ошибку: Неустранимая ошибка: вызов функции-члена removeChild () для необъекта.

загруженная строка dom может содержать или не содержать элемент img.Кто-нибудь знает, что я здесь делаю не так?Любая помощь с благодарностью!

1 Ответ

3 голосов
/ 09 октября 2011

is_object() не является хорошим тестом для этого, так как ->item() вернет объект, несмотря ни на что.Это просто не будет DOMNode, если в DOMNodeList нет фактического совпадающего элемента, который возвращает getElementsByTagName.

Лучшим методом будет:

$images = $doc->getElementsByTagName('img');
if ($images->length > 0) {
   $imgnode = $images->item(0);
   $image = $imgnode->getAttribute('src');
   $imgnode->parentNode->removeChild($imgnode); 
} else {
   $image = '#';
}
...