使用 PHP 将 HTML 代码添加到现有的 HTML 文件

Posted

技术标签:

【中文标题】使用 PHP 将 HTML 代码添加到现有的 HTML 文件【英文标题】:Add HTML Code to existing HTML file using PHP 【发布时间】:2021-06-29 22:47:22 【问题描述】:

在我的 index.html 中有几个链接,看起来像这样

 <div id="links">
    <a class="link" href="download1.html" target="_blank">Download 1</a>
    <a class="link" href="download2.html" target="_blank">Download 2</a>
    <a class="link" href="download3.html" target="_blank">Download 3</a>
    <a class="link" href="download4.html" target="_blank">Download 4</a>
</div>

我想要做的是,通过 php 向这个 div 添加新的链接。我用 DOM 和 appendChild 尝试了一些东西,但它没有像我想要的那样工作。

<?php
$filename = $_GET['filename'];
$tabtitle = $_GET['tabtitle'];

$dom = new DOMDocument;
$dom = loadHTMLFile('index.html');

$node = "<a class="link" href="$filename.html" target="_blank">$tabtitle</a>";
$findelement = $dom->getElementById('links');
$dom->parentNode->appendChild($findelement, $node);

echo $dom->saveXML();?>

我已经能够通过 PHP 创建引用的 HTML 文件,但我不想一直手动添加这些链接。

感谢您的帮助!

【问题讨论】:

“但它并没有像我想要的那样工作” - 那么实际发生了什么?如果我们知道这些问题是什么,我们就可以更轻松地帮助您解决代码问题。 必须在服务器端完成吗?在 HTML 中插入 PHP 怎么样? $dom-&gt;saveXML()?那是HTML $dom-&gt;parentNode 实际上是什么?? $dom = loadHTMLFile('index.html'); 不正确 - 应该是 $dom -&gt; loadHTMLFile('index.html'); 【参考方案1】:

正如 cmets 中提到的,有一些小错误,当如下更正时,应该会产生我认为您正在尝试做的事情:

<?php

    if( isset(
        $_GET['filename'],
        $_GET['tabtitle']
    ))
        $filename = $_GET['filename'];
        $tabtitle = $_GET['tabtitle'];
        
        
        $dom = new DOMDocument;
        $dom->loadHTMLFile( __DIR__ . '/index.html' );
        
        
        $div=$dom->getElementById('links');
        
        $a=$dom->createElement('a',$tabtitle);
        $a->setAttribute('class','link');
        $a->setAttribute('href',$filename.'.html');
        $a->setAttribute('target','_blank');
        
        $div->appendChild($a);
        
        echo $dom->saveHTML();
    
?>

保存index.html文件(我叫x-index.html以避免与现有文件冲突)

<?php
    
    if( isset(
        $_GET['filename'],
        $_GET['tabtitle']
    ))
        $filename = $_GET['filename'];
        $tabtitle = $_GET['tabtitle'];
        
        
        $dom = new DOMDocument;
        $dom->loadHTMLFile( __DIR__ . '/x-index.html' );
        
        
        $div=$dom->getElementById('links');
        
        $a=$dom->createElement('a',$tabtitle);
        $a->setAttribute('class','link');
        $a->setAttribute('href',$filename.'.html');
        $a->setAttribute('target','_blank');
        
        $div->appendChild($a);
        
        echo $dom->saveHTML(); //display
        
        
        $dom->saveHTMLFile( __DIR__ . '/x-index.html' ); //save
    
?>

【讨论】:

我试过你的代码,一般来说它正在做它应该做的事情。现在的问题是:当我使用外部 PHP 文件执行此操作时,它不会将更改保存到 Index.html 第二个问题是,当我将我的 index.html 重命名为 index.php 并将您的代码实现到索引文件时,它也不会保存,所以在添加新文件后访问索引文件后链接,没更新 否 - 您发布和我调整的代码不会保存外部文件。而不是echo $dom-&gt;saveHTML() 你需要saveHTMLFile() 那么echo $dom-&gt;saveHTMLFile()?如果是这样,它没有工作。它不会给出错误 最后一个问题:如果我运行这个 PHP 脚本,它会弄乱我的 HTML 文件的布局,我该如何避免这种情况?

以上是关于使用 PHP 将 HTML 代码添加到现有的 HTML 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jQuery 将 JavaScript 代码添加到现有的 iFrame 中?

将源代码添加到现有的 automake 程序

如何将一些脚本添加到现有的 swf 文件中?

将 UIView 添加到现有的 UIViewController

如何将一些脚本添加到现有的swf文件?

iText - 将内容添加到现有的 PDF 文件