Я хочу превратить список html в массив,
$string = ' <a href="#" class="something">1</a> <a href="#" class="something">2</a> <a href="#" class="something">3</a> <a href="#" class="something">4</a> ';
Я работаю над методом DOM,
$dom = new DOMDocument; $dom->loadHTML($string); foreach( $dom->getElementsByTagName('a') as $node) { $array[] = $node->nodeValue; } print_r($array);
результат,
Array ( [0] => 1 [1] => 2 [2] => 2 [3] => 4)
но я ищу результат, как это на самом деле,
Array ( [0] => <a href="#" class="something">1</a> [1] => <a href="#" class="something">2</a> [2] => <a href="#" class="something">3</a> [3] => <a href="#" class="something">4</a> )
Является ли это возможным?
Передайте узел в DOMDocument::saveHTML
чтобы получить его представление HTML:
$string = ' <a href="#" class="something">1</a> <a href="#" class="something">2</a> <a href="#" class="something">3</a> <a href="#" class="something">4</a> '; $dom = new DOMDocument; $dom->loadHTML($string); foreach($dom->getElementsByTagName('a') as $node) { $array[] = $dom->saveHTML($node); } print_r($array);
Результат:
Array ( [0] => <a href="#" class="something">1</a> [1] => <a href="#" class="something">2</a> [2] => <a href="#" class="something">3</a> [3] => <a href="#" class="something">4</a> )
Между прочим, работает только с PHP 5.3.6 и выше.