PHP DOM : parsing a HTML list into an array?

标签 php dom php-5.3 html-parsing

我有下面的 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>
';

这是我当前使用 DOMDocument 的代码:

$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 及更高版本。

关于PHP DOM : parsing a HTML list into an array?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10366458/

相关文章:

php - 如何将值从 Controller 传递到 codeigniter 中查看?

php - 在Mysql php中一次连续搜索多个单词

php - jQuery.post 没有收到来自 php 脚本的错误

php - 如何安装 PHP 的 Libevent?

php - 分解可能只有一个值的数组

java - 如何使用 dom 在 XML 文件中追加元素?

java - 如何使用 XPath 的结果创建 xml 文档

html - 从上下文中获取对 Canvas 元素的引用?

Apache 删除请求

PHP 命名空间 : equivalent to C# using