Я создаю файл ветки из объекта DOM, и я хочу добавить блок кода вокруг определенного div, чтобы в дальнейшем я мог использовать его в ветке.
Итак, HTML-код, который я сейчас имею, выглядит так:
<div>
<div class="class1 class2">
<div>
Some content here
</div>
</div>
</div>
И я хочу изменить его на (форматирование не важно):
<div>
{% block topBar %}
<div class="class1 class2">
<div>
Some content here
</div>
</div>
{% endblock %}
</div>
Итак, я сделал что-то вроде:
$pullURL = "http://example.com";
$dom = new DOMDocument('1.0');
$dom->loadHTMLFile($pullURL);
$domx = new DOMXPath($dom);
$topBar = $domx->query("//*[contains(@class, 'class1 class2')]");
$startTopBlock = $dom->createTextNode("{% block topBar %}");
$topBar[0]->insertBefore($startTopBlock, $topBar[0]);
Тем не менее, я продолжаю получать сообщение
Неустранимая ошибка PHP: необработанное исключение «DOMException» с сообщением «Нет
Обнаружена ошибка »в /path/to/file.php:41
где строка 41 — код вставки перед.
Как лучше всего обернуть объект dom в текст?
Проблема была в том, что мне нужно было вставить его в родительский элемент, поэтому правильный код должен быть:
$topBar[0]->parentNode->insertBefore($startTopBlock, $topBar[0]);
и не
$topBar[0]->insertBefore($startTopBlock, $topBar[0]);
как я хочу вставить этот код в родительский до $ topBar [0]. Все остальное было правильно.
Других решений пока нет …