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 字符串的主要内容,如果未能解决你的问题,请参考以下文章