Имеется строка
<div class="value1 666"></div>
Как с помощью PHP и Regex получить массив из двух значений value1
и 666
?
Мое текущее решение:
$regex = "/(?:.*class[ ]*=[ ]*[\"\'])(.*)(?:[\"\'].*)/";
$html = "<div class='value1 666'></div>";
preg_match_all($regex, $html, $results);
var_dump($results);
Имеет след недостатки :
$results
первое значение всегда входная строкаpreg_match_all("/class\s*=\s*[\"']([^\"'\s]*)\s*([^\"'\s]*)[\"']/", $input, $output);
Искомые данные будут содержаться в $output[1]
и $output[2]
:
preg_match_all("/class\s*=\s*[\"']([^\"'\s]*)\s*([^\"'\s]*)[\"']/",
"<div class='value1 666'></div><div class='value2 333'></div>", $output);
var_dump($output[1]):
array(
0 => value1
1 => value2
)
var_dump($output[2]):
array(
0 => 666
1 => 333
)
Онлайн тест выражения
Для парсинга html воспользуйтесь готовой библиотекой, к примеру phpQuery https://github.com/punkave/phpQuery
$doc = phpQuery::newDocument('<div class="value1 666"></div>');
$divs = $document->find('div');
$result = array();
foreach ($divs as $_div) {
$class = pq($_div)->attr('class');
$result[] = explode(' ', $class);
}
var_dump($result);
regexp - формальный язык поиска и осуществления манипуляций с подстроками в тексте. А не парсер чего либо...
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Есть страница, на странице iframe, в src iframe url SPA-приложения на Vuejs 2
Здравствуйте,пишу отображение obj/stl объектов на сайте,вот полный код https://jsfiddlenet/pvaLv4Ln/