insert не делает то, что вы думаете, он делает, он не вставляет элемент, он вставляет тег под существующим элементом. То, что вы хотите, это вставить.
сравнить:
вставка ($ tag1, [$ необязательный_atts1], $ tag2, [$ необязательный_atts2], ...)
Для каждого тега в списке вставляется элемент $ tag как единственный дочерний элемент элемента. Элемент получает необязательные атрибуты в «$ option_atts». Все дочерние элементы элемента устанавливаются как дочерние элементы нового элемента. Элемент верхнего уровня возвращается.
с:
вставить ($ option_position, $ ref)
Вставить (ранее «вырезанный» или вновь созданный) элемент. Умри, если элемент уже принадлежит дереву.
Возможно, вам придется вырезать или скопировать элемент, прежде чем вставлять его в новое дерево.