PHP 中的 HTML DOM 操作

ein*_*ein 3 php dom

我想知道如何使用 PHP 操作 DOM 树?

我已经看到一些关于加载到 html 文件中的 XML DOM 的答案。但是如果我不需要加载呢?如果我想要操作的文档中有 XML DOM 脚本怎么办?

我在下面有一个打印出所有文件夹的示例。填空你的答案。我想用文件夹的名称作为文本节点创建 div 元素。答案需要一些 XML DOM 脚本,因为我将在我的网站中创建比一个 div 元素更多的元素。并且使用例如 echo 是不切实际的,因为您可能会在错误的元素中插入一个元素等。

$sql = "
    SELECT name
    FROM folders
    WHERE profileId = '$profileId'
";
$result = mysql_query($sql) or die('Error6: '.mysql_error());
while($row = mysql_fetch_array($result)) {

}
Run Code Online (Sandbox Code Playgroud)

Mar*_*c B 6

您不需要 PHP 来操作您已经生成的文档的 dom。让 PHP 直接生成一些 HTML 要容易得多。DOM 用于剖析/更改在别处生成的 HTML。换句话说,您的脚本将是:

while($row = mysql_fetch_array($result)) {
    echo "<div>{$row['name']}</div>";
}
Run Code Online (Sandbox Code Playgroud)

DOM 示例,演示繁琐

好的,这是生成一段带有一些内部跨度和诸如此类的文本的 PHP 方法:

echo "<div> This is my div, <span>There are many like it, <b>but this one</b> is</span> mine</div>";
Run Code Online (Sandbox Code Playgroud)

等效的 DOM 调用:(未测试,仅用于演示):

$dom = new DOM;

$bold = new DOMElement('b');
$bold->appendChild(new DOMText('but this one'));

$span = new DOMElement('span');
$span->appendChild(new DOMText('There are many like it,'));
$span->appendChild($bold);
$span->appendChild(new DOMText(' is');

$div = new DOMElement('div');
$div->appendChild(new DOMText(' This is my div,'));
$div->appendChild($span);
$div->appendChild(' mine');

echo $div->saveXML();
Run Code Online (Sandbox Code Playgroud)

所以....... 仍然使用 DOM 比使用更容易echo吗?