gpt4 book ai didi

php - DOMDocument 添加属性到根标签

转载 作者:行者123 更新时间:2023-12-02 04:51:34 30 4
gpt4 key购买 nike

我想制作向给定 html 的根标记添加一些属性的函数。

我这样做:

    $dom = new \DOMDocument();
$dom->loadHTML($content);

$root = $dom->documentElement;

$root->setAttribute("data-custom","true");

对于 $content='<h1 class="no-margin">Lorem</h1>'

它返回:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html data-custom="true"><body><h1 class="no-margin">Do more tomorrow. For less.</h1></body></html>

虽然应该是:

<h1 data-custom="true" class="no-margin">Lorem</h1>

如何使 DOMDocument 不创建 doctype、html、body 标签,而只对给定的 html 进行操作以及如何选择给定 html 的根节点

附言。我永远不会使用正则表达式来管理 html。

最佳答案

当您输出 HTML 时,选择特定节点而不是整个文档:

<?php

$content = '<h1 class="no-margin">Lorem</h1>';

$dom = new \DOMDocument();
$dom->loadHTML($content);

$node = $dom->getElementsByTagName('h1')->item(0);
$node->setAttribute('data-custom','true');

print $dom->saveHTML($node);
// <h1 class="no-margin" data-custom="true">Lorem</h1>

或者,由于格式正确,将内容视为 XML 以避免添加额外的 HTML 标记:

<?php

$content = '<h1 class="no-margin">Lorem</h1>';

$dom = new \DOMDocument();
$dom->loadXML($content);

$dom->documentElement->setAttribute('data-custom','true');

print $dom->saveXML($dom->documentElement);
// <h1 class="no-margin" data-custom="true">Lorem</h1>

关于php - DOMDocument 添加属性到根标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18758101/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com