В PHP с использованием класса `DOMDocument` невозможно добавить атрибут прямо в начало списка атрибутов, поскольку `DOMDocument` не поддерживает прямого метода для вставки атрибута в определенное место. Вместо этого, вам нужно создать новый атрибут, затем клонировать все существующие атрибуты и присоединить их после нового атрибута.
Вот пример того, как это можно сделать:
```php
<?php
// Создаем новый документ DOM
$dom = new DOMDocument();
// Загрузка HTML
$dom->loadHTML('<p data-attr-1="foo" data-attr-2="bar"></p>');
// Получаем узел, к которому будем добавлять атрибут
$node = $dom->getElementsByTagName('p')->item(0);
// Создаем новый атрибут
$class_attr_node = $dom->createAttribute('class');
$class_attr_node->value = 'some-class'; // Устанавливаем значение атрибута
// Добавляем новый атрибут
$node->setAttributeNode($class_attr_node);
// Теперь получится устойчивый обход атрибутов для перестановки
$node_attrs = [];
foreach ($node->attributes as $attr) {
$node_attrs[] = $attr; // Сохраняем существующие атрибуты
}
// Удаляем все атрибуты, чтобы их добавить в нужном порядке
foreach ($node_attrs as $attr) {
$node->removeAttribute($attr->name);
}
// Сначала добавляем новый атрибут, а затем существующие
$node->setAttributeNode($class_attr_node);
foreach ($node_attrs as $attr) {
$node->setAttribute($attr->name, $attr->value);
}
// Выводим результат
echo $dom->saveHTML();
?>
```
В этом коде мы:
1. Создаем новый атрибут `class`.
2. Сохраняем все существующие атрибуты в массив.
3. Удаляем существующие атрибуты из узла, чтобы иметь возможность при добавлении задать новый порядок.
4. Сначала добавляем новый атрибут, после чего добавляем существующие в новом порядке.
В результате `<p>` элемент получает новый атрибут `class` в самом начале, и атрибуты выставляются в нужном порядке. После выполнения данного кода, HTML будет следующим:
```html
<p class="some-class" data-attr-1="foo" data-attr-2="bar"></p>
```