当前位置: 首页 > 知识库问答 >
问题:

PHPDOM:将HTML列表解析为数组?

柴衡
2023-03-14

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

这可能吗?

共有1个答案

翟聪
2023-03-14

将节点传递到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>
)

仅适用于PHP5.3。顺便说一句,6和更高。

 类似资料:
  • 问题内容: 我想获取一个HTML表并对其进行解析以获得字典列表。每个列表元素将是一个与表中的一行相对应的字典。 例如,如果我有一个包含三列(用标题标签标记),“事件”,“开始日期”和“结束日期”的HTML表,并且该表有5个条目,我想将该表解析为返回长度为5的列表,其中每个元素都是带有键“事件”,“开始日期”和“结束日期”的字典。 谢谢您的帮助! 问题答案: 您应该使用一些HTML解析库,例如: 版

  • 问题内容: 如果我们将Apache Web服务器设置为将Apache配置为将 所有 HTML 处理为PHP,是否存在安全性/性能方面的顾虑?我专门指的是: 我当时需要将一些PHP逻辑添加到一些HTML文件中;理想情况下,我不必将文件名更改为(保持的页面排名等)。 这与以下问题有关:httpd AddType指令 编辑: 从下面的现有答案/评论中,社区似乎建议使用重定向或仅针对特定的HTML文件。约

  • 问题内容: 我必须在我的网站上找到一张桌子。并且必须从“” 获取此表的数据,我已经尝试了很多方法,但是没有用。 .. 问题答案: 从外部来源获取数据时,要做的第一件事就是了解所返回的内容。 也是 结果: 因此,现在您知道您要处理的是对象,而不是标量值或数组。 因此,请尝试以下代码:-

  • 我有一个适配器,它必须显示从服务器获得的HTML内容,但我不能为每个适配器项使用WebView,因为性能很差。。。 我认为唯一可能的解决方案是将每个HTML解析为TextView。 在iOS中,DTCoreText库实现了这一点。Android中是否有类似的库?Html。fromHtml()只支持一些标记,我需要将元素显示为列表、表格、嵌入的图像和视频、表情符号。。。

  • 问题内容: 我想使用HTML敏捷包来解析复杂网页中的表,但是我迷失在对象模型中。 我看了链接示例,但没有以这种方式找到任何表数据。我可以使用XPath获取表吗?在加载有关如何获取表的数据之后,我基本上迷失了。我以前在Perl中完成过此操作,虽然有点笨拙,但是可以。()。 如果有人能够阐明正确的对象顺序进行解析,我也很高兴。 问题答案: 怎么样:使用HTML Agility Pack 请注意,如果需

  • 我有一个json文件。 我需要将它转换为String的ArrayList。如何使用Jackson库? UPD2: