#php #arrays #curl #xpath #domdocument
#php #массивы #curl #xpath #domdocument
Вопрос:
у меня небольшая проблема со следующей функцией DOM Я хочу сохранить данные в одном массиве, но в результате я получаю отдельные данные в отдельных массивах. Как я могу объединить все данные в один массив?
В переменной $html находится содержимое html из site.html взято с помощью curl.
site.html
<div class="wraper">
<div class="box"> Title </div>
<div class="value"> 1 </div>
<div class="value"> 2 </div>
<div class="value"> 3 </div>
<div class="box"> Title2 </div>
<div class="value"> 4 </div>
<div class="value"> 5 </div>
<div class="value"> 6 </div>
</div>
это мой код
$dom = new DOMDocument();
@$dom->loadHTML($html);
$dom->preserveWhiteSpace = false;
$xpath = new DOMXpath($dom);
$expression = '//*[(self::div or self::span) and contains(concat(" ", normalize- space(@class), " "), "wraper")]';
foreach ($xpath->evaluate($expression) as $node) {
if ($node->hasChildNodes()) {
foreach ($node->childNodes as $node2) {
echo $node2->nodeValue;
}
}
}
Я получил каждое значение узла как новый массив [0] и там как первый элемент, из-за цикла foreach.
Я хочу получить значения следующим образом.
array (
"0" => array([0] => "Title "
[1] => 1
[2] => 2
[3] => 3),
"1" => array([0] => "Title2 "
[1] => 4
[2] => 5
[3] => 6)
)
Спасибо
Комментарии:
1. Этот код не создает массивы, он просто выводит как
echo $node2->nodeValue;
. Пожалуйста, опубликуйте код, который вы создаете или добавляете к своему массиву, чтобы мы могли помочь исправить проблемы там.2. есть код
$v = $node2->nodeValue; global $arr; array_push($arr, $v);
, но как я могу различать 2 «коробочных» раздела как отдельные элементы. Я хочу сохранить 4 значения в одной строке в базе данных для exp. в MySQL