如何使用 PHP DOMDocument 链接类似元素?

Posted

技术标签:

【中文标题】如何使用 PHP DOMDocument 链接类似元素?【英文标题】:How to chain like element with PHP DOMDocument? 【发布时间】:2022-01-22 11:37:31 【问题描述】:

我正在寻求使用 DOMDocument 构建一个 html 表。例如,表格的第一行(标题行)如下所示:

<tr><th>text</th><th>text</th><th>text</th><th>text</th><th>text</th><th>text</th></tr>

表行 (

) 后跟几个表头标记(,也是 标记)链接在一起。

我尝试了以下看起来合乎逻辑的方法:

$dom_obj = new DOMDocument('1.0', 'UTF-8');

// First the initial table tag.
$table = $dom_obj->createElement('table');
$dom_obj->appendChild($table);

// Table row
$tr = $dom_obj->createElement('tr');
$table->appendChild($tr);

// For loop ??
$th = $dom_obj->createElement('th');
$tr->appendChild($th);

$th = $dom_obj->createElement('th');
$th->appendChild($th);

$html_out = $dom_obj->saveHTML();

我收到以下错误消息:

php 致命错误:未捕获的 DOMException:层次结构请求错误。 . . . . . .

据我所知,这意味着 DOMDocument 不喜欢我试图将类似的元素附加在一起。

我还尝试了以下方法,在我去的时候唯一地命名了

$dom_obj = new DOMDocument('1.0', 'UTF-8');

// First the initial table tag.
$table = $dom_obj->createElement('table');
$dom_obj->appendChild($table);

// Table row
$tr = $dom_obj->createElement('tr');
$table->appendChild($tr);

// For loop ??
$th1 = $dom_obj->createElement('th');
$tr->appendChild($th1);

$th2 = $dom_obj->createElement('th');
$th1->appendChild($th2);

$html_out = $dom_obj->saveHTML();

这给出了以下结果:

仍然不是所需要的。

如何使用 PHP DOMDocument 将 或 链接在一起?

【问题讨论】:

您收到“层次结构请求错误”,因为您尝试将 $th 附加到自身,使用 $th-&gt;appendChild($th);,这没有意义。您可能打错字了,打算像前面几行一样写$tr-&gt;appendChild($th);

【参考方案1】:

经过进一步的实验,我成功地得到了我想要的东西。我尝试了以下方法:

$dom_obj = new DOMDocument('1.0', 'UTF-8');

// First the initial table tag.
$table = $dom_obj->createElement('table');
$dom_obj->appendChild($table);

// Table row
$tr = $dom_obj->createElement('tr');
$table->appendChild($tr);

// For loop here??
$th = $dom_obj->createElement('th');
$tr->appendChild($th);

$th = $dom_obj->createElement('th');
$tr->appendChild($th);

$html_out = $dom_obj->saveHTML();

我在

标签上直接添加了更多 标签,从而产生了将 标签链接在一起的效果。

不完全直观,但是,任何可行的方法。我现在假设要向表中添加更多行,我需要将

标签直接附加到 标签。

现在我可以在代码中构建一个表格,并在执行过程中添加数据库信息。

【讨论】:

以上是关于如何使用 PHP DOMDocument 链接类似元素?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PHP DomDocument 获取规范值?

如何防止 PHP 的 DOMDocument 编码 html 实体?

如何使用 PHP 的 DOMDocument 获取元素的序列化 HTML?

如何使 DOMDocument 在 PHP 中编写独立 = 是?

如何使用 php 类 DOMDocument 将新的 xml 节点附加到现有的 .xml 文件?

如何在 PHP 中将 XML 字符串转换为 DOMDocument?