@drunken_ikarus

Ошибки при парсинге DOMDocument, в чем причина?

Есть примерно такой массив:
$arr = array(
0 => array( 'snapshot' => '<div xmlns="http://www.w3.org/1999/xhtml" id="pages-content"><div class="image"><img src="/2019/12/1.jpg" /></div><div class="image"><img src="/2019/12/11.jpg" /></div></div>'),
1 => array( 'snapshot' => '<div xmlns="http://www.w3.org/1999/xhtml" id="pages-content"><div class="image"><img src="/2019/12/2.jpg" /></div><div class="image"><img src="/2019/12/22.jpg" /></div></div>'),
)


есть функция:
public function getPhotobookImages($snapshot) {
$result = array();
		$dom = new DOMDocument;
		$dom->loadHTML($snapshot);
		$images = $dom->getElementsByTagName('img');
		foreach ($images as $image) {
			$result[] = $image->getAttribute('src');
		}

		return $result;
	}

хочу получить атрибут src всех тегов img, перебираю массив:
foreach($arr as $a) {
$images[] = $this->getPhotobookImages($a['snapshot'])
}

в итоге получаю ошибки:
Warning: DOMDocument::loadHTML(): ID nwgrip already defined in Entity, line: 1 in (строка где: $dom->loadHTML($snapshot);)
Warning: DOMDocument::loadHTML(): ID negrip already defined in Entity, line: 1 in (строка где: $dom->loadHTML($snapshot);)
Warning: DOMDocument::loadHTML(): ID nwgrip already defined in Entity, line: 1 in (строка где: $dom->loadHTML($snapshot);)
Warning: DOMDocument::loadHTML(): ID negrip already defined in Entity, line: 1 in (строка где: $dom->loadHTML($snapshot);)

Если отправить из массива $arr только одно значение в getPhotobookImages, то все работает, ошибок нет
  • Вопрос задан
  • 295 просмотров
Пригласить эксперта
Ответы на вопрос 1
@kikimarik
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->loadHTML(mb_convert_encoding($snapshot, 'HTML-ENTITIES', 'UTF-8'));
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы