Я пытаюсь проанализировать данные формата html в массивах с использованием классов тегов, но я не смог получить желаемый формат. Ниже приведены мои данные
$text ='<div class="result results_links results_links_deep web-result "> <div class="links_main links_deep result__body"> <h2 class="result__title"> <a rel="nofollow" class="result__a" href="">Text1</a> </h2> <a class="result__snippet" href="">Text1</a> <a class="result__url" href=""> example.com </a> </div> </div> <div class="result results_links results_links_deep web-result "> <div class="links_main links_deep result__body"> <h2 class="result__title"> <a rel="nofollow" class="result__a" href="">text3</a> </h2> <a class="result__snippet" href="">text23</a> <a class="result__url" href=""> text.com </a> </div> </div>';
Я пытаюсь получить результат, используя код ниже
$lines = explode("\n", $text); $out = array(); foreach ($lines as $line) { $parts = explode(" > ", $line); $ref = &$out; while (count($parts) > 0) { if (isset($ref[$parts[0]]) === false) { $ref[$parts[0]] = array(); } $ref = &$ref[$parts[0]]; array_shift($parts); } } print_r($out);
Но мне нужен результат точно так же, как ниже
array:2 [ 0 => array:3 [ 0 => "Text1" 1 => "Text1" 2 => "example.com" ] 1 => array:3 [ 0 => "text3" 1 => "text23" 2 => "text.com" ] ]
Демо: https://eval.in/746170
Даже я пробовал дом, как внизу, в laravel:
$dom = new DOMDocument; $dom->loadHTML($text); foreach($dom->getElementsByTagName('a') as $node) { $array[] = $dom->saveHTML($node); } print_r($array);
Так как я могу использовать классы для разделения данных по мере того как я хотел. Любой предложения please.Thank вы.