Массив через preg_match_all

Переменная $diametr получает такой массив:

Array ( 
    [0] => DiDom\Element Object (
        [node:protected] => DOMElement Object ( 
            [tagName] => div 
            [schemaTypeInfo] => 
            [nodeName] => div 
            [nodeValue] => металл 20 см (3 мм)
            [nodeType] => 1 
            [parentNode] => (object value omitted)
            [childNodes] => (object value omitted)
            [firstChild] => (object value omitted)
            [lastChild] => (object value omitted)
            [previousSibling] => (object value omitted)
            [nextSibling] => (object value omitted)
            [attributes] => (object value omitted)
            [ownerDocument] => (object value omitted)
            [namespaceURI] => 
            [prefix] => 
            [localName] => div 
            [baseURI] => 
            [textContent] => металл 20 см (3 мм) 
        )
        [classAttribute:protected] => 
        [styleAttribute:protected] => 
    )
    [1] => DiDom\Element Object ( 
        [node:protected] => DOMElement Object ( 
            [tagName] => div 
            [schemaTypeInfo] => 
            [nodeName] => div 
            [nodeValue] => металл 20 см (3,5 мм)
            [nodeType] => 1 
            [parentNode] => (object value omitted)
            [childNodes] => (object value omitted)
            [firstChild] => (object value omitted)
            [lastChild] => (object value omitted)
            [previousSibling] => (object value omitted)
            [nextSibling] => (object value omitted)
            [attributes] => (object value omitted)
            [ownerDocument] => (object value omitted)
            [namespaceURI] => 
            [prefix] => 
            [localName] => div 
            [baseURI] => 
            [textContent] => металл 20 см (3,5 мм) 
        )
        [classAttribute:protected] => 
        [styleAttribute:protected] => 
    )
    [2] => DiDom\Element Object ( 
        [node:protected] => DOMElement Object ( 
            [tagName] => div 
            [schemaTypeInfo] => 
            [nodeName] => div 
            [nodeValue] => металл 20 см (4 мм)
            [nodeType] => 1 
            [parentNode] => (object value omitted)
            [childNodes] => (object value omitted)
            [firstChild] => (object value omitted)
            [lastChild] => (object value omitted)
            [previousSibling] => (object value omitted)
            [nextSibling] => (object value omitted)
            [attributes] => (object value omitted)
            [ownerDocument] => (object value omitted)
            [namespaceURI] => 
            [prefix] => 
            [localName] => div 
            [baseURI] => 
            [textContent] => металл 20 см (4 мм) 
        )
        [classAttribute:protected] => 
        [styleAttribute:protected] => 
    ) 
)

через preg_match_all пытаюсь получить все значения "цифра+мм" и передать значение в $diametr_result:

$diametr  = preg_match_all('/[0-9\.\,]+(?=\s?мм)/ui', $diametr, $diametr_result);
$diametr_result = implode(" ", $diametr_result);

Регулярка правильная, на одиночном примере отрабатывает, Но почему-то не может найти значения в этом массиве. Что я упускаю?


Ответы (1 шт):

Автор решения: AlexKnow

Должно быть что-то вроде этого:

<?php 

$items = [];

//получаем данные из строк
foreach ($diametr as $value) {

    preg_match('/[0-9\.\,]+(?=\s?мм)/ui', $value->node->textContent, $diametr_result);

    foreach ($diametr_result as $result) {
        $items[] = $result;
    }
}

$diametr_result = implode(" ", $items);
→ Ссылка