在没有父容器的情况下使用 DOMDocument 添加 HTML 文本

Prepend HTML text using DOMDocument without parent container

假设我有 <p>Text</p>

我想使用 DOMDocument 创建一个函数来插入文本,例如:

insertText('<p>Text</p>', '<strong>1.</strong> ')

所以结果是<p><strong>1.</strong> Text<p>

我已经在访问这个段落标签,所以我想我快到了,我只是不知道如何附加可以阅读为 HTML

的纯文本
$dom = new DOMDocument();
$question_paragraphs = array();
$dom->loadHTML($str);
$par = $dom->getElementsByTagName('p');
if ($par->length == 1) {
    $par->item(0)->setAttribute("class", "first last");
###
### How do I do this here?
###
}

可以这样插入文字吗?

您可以使用方法insertBefore (Official Documentation) 如下

  1. 您创建 strong 元素
  2. 你在文本节点之前插入这个节点
$span = $dom->createElement('strong', '1.');
$par->item(0)->insertBefore($span, $par->item(0)->firstChild);

请注意,insertBefore 函数的第二个参数是您要为其添加标签的子项。所以在这种情况下你可以使用 firstChild 因为你的 <p> 只包含 Text.

这将最终输出

<p class="first last"><span>1.</span>Text</p>