@mrDolte

Собрать массив из строки — PHP?

Дали задачу.

Есть строка содержащая такое.
<h3></h3>
<dl class="data">
<dt class="name">Поле1</dt>
<dd class="value">Поле1_1</dd>
<dt class="name">Поле2</dt>
<dd class="value">Поле2_2</dd>
</dl>


как собрать такой массив ?
$array = array(
  array(
    "name" => "Поле1",
    "value" => "Поле1_1",
  ),
  array(
    "name" => "Поле2",
    "value" => "Поле2_2",
  )
);
  • Вопрос задан
  • 177 просмотров
Решения вопроса 1
ProjectSoft
@ProjectSoft
Front-end && Back-end разработчик
Используйте регулярку
https://regex101.com/r/WG5LYZ/1/
И обрабатывайте результат в нужный вам формат
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Yan-s
Есть библиотеки для разбора DOM. Есть библиотеки для разбора XML. Есть регулярки, если жить скучно.
Что у вас не получается?
Ответ написан
Комментировать
@galliard
$source = '<h3></h3>
<dl class="data">
<dt class="name">Поле1</dt>
<dd class="value">Поле1_1</dd>
<dt class="name">Поле2</dt>
<dd class="value">Поле2_2</dd>
</dl>';

$matches = [];

preg_match_all('/class="name">(.+?)<.*?class="value">(.+?)</su', $source, $matches, PREG_SET_ORDER);

$result = array_map(
    function (array $item): array {
        return ['name' => $item[1], 'value' => $item[2]];
    },
    $matches
);
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы