在没有父容器的情况下使用 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) 如下
- 您创建
strong
元素
- 你在文本节点之前插入这个节点
$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>
假设我有 <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) 如下
- 您创建
strong
元素 - 你在文本节点之前插入这个节点
$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>