Я пытаюсь связать (значение-> текст) группу параметров в элементе выбора.Моя проблема с реализацией ниже состоит в том, что выбранное значение не связывается с правильным текстом:
$html = '<select class="general class"
data-url="/foo/bar/">
<option value=""></option>
<option Selected value="Bar 1">Foo 1</option>
<option value="Bar 2">Foo 2</option>
<option value="Bar 3">Foo 3</option>
<option value="Bar 4">Foo 4</option>
<option value="Bar 5">Foo 5</option>
<option value="Bar 6">Foo 6</option>
<option value="Bar 7">Foo 7</option>
</select>';
$dom = new \DomDocument('1.0', 'UTF-8');
libxml_use_internal_errors(true);
$dom->loadHTML($html);
$xp = new \DOMXpath($dom);
$opts_txt = $xp->query('//select[@data-url="/foo/bar/"]/option/text()');
$opts_vals = $xp->query('//select[@data-url="/foo/bar/"]/option/@value');
foreach ($opts_txt as $key => $opt) {
echo $opt->nodeValue. "\n";
echo $opts_vals->item($key)->nodeValue. "\n\n";
}
Вывод:
Foo 1
Foo 2
Bar 1
Foo 3
Bar 2
Foo 4
Bar 3
Foo 5
Bar 4
Foo 6
Bar 5
Foo 7
Bar 6
ДЕМОНСТРАЦИЯ
Я знаю, должно быть потому, что первое значение пустое, и я скорее оставляю это чистым и не делаю много логики, чтобы связать их правильно.Я предполагаю, что есть другой и более прямой путь.
Примечание: я не могу захватить выборку по классу, потому что есть много выборок с одним и тем же классом и не уверен насчет их позиции в HTML.