PHP - 解析 HTML,选择标签,在所选标签内插入另一个 HTML 字符串

Posted

技术标签:

【中文标题】PHP - 解析 HTML,选择标签,在所选标签内插入另一个 HTML 字符串【英文标题】:PHP - Parse HTML, Select tag, Insert another HTML string inside selected tag 【发布时间】:2021-09-29 21:35:51 【问题描述】:

我正在尝试将 html 字符串插入另一个 HTML 元素中,该元素在创建的 DOM 中使用从字符串加载的 HTML 进行解析;

这是我的代码:

php

$str = $attributes["description_text"]; // HTML string
$dom = new DOMDocument; // initialize the domdocument
$dom->loadHTML($str); // load our html into the $dom object
$items = $dom->getElementsByTagName('mark'); // retrieving elements by tag

$gear = $dom->createElement('a', "Lorem ipsum dolor sit amet");
$dom->appendChild($gear);
    
$output_dom = $dom->saveHTML();

return '<p>'. $output_dom .'</p>';

HTML($str 内容):

Phasellus eu arcu vestibulum, ultrices massa eu, <mark>TOOLTIP</mark> sodales dui.

期望的结果(mark 标签内的a 标签):

<p>Phasellus eu arcu vestibulum, ultrices massa eu, <mark>TOOLTIP<a>Lorem ipsum dolor sit amet</a></mark> sodales dui.</p>

电流输出:

<p>Phasellus eu arcu vestibulum, ultrices massa eu, <mark>TOOLTIP</mark> sodales dui.</p> 
<a>Lorem ipsum dolor sit amet</a>

所以现在新字符串附加在整个段落的末尾,而不是mark标签内

【问题讨论】:

您在$items 中找到要操作的元素,因此您需要对这些元素而不是整个文档调用appendChild() ($dom) 【参考方案1】:

找到了解决方案,从$items中存储的元素中选择了一个item(0),并在上面调用了appendChild(),感谢@NigelRen

$first_mark = $items->item(0);
$first_mark->appendChild($gear);

【讨论】:

以上是关于PHP - 解析 HTML,选择标签,在所选标签内插入另一个 HTML 字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何显示从中选择的值 内 标签?

抓取TreeView所选节点的位置

使用php simple html dom parser解析html标签

IE 11不会更新选择元素中选定的选项项标签

选择数据并在所选记录中查找重复值的 sql 查询

JS基础