Массив через 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);