使用 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->saveXML()
?那是HTML
$dom->parentNode
实际上是什么??
$dom = loadHTMLFile('index.html');
不正确 - 应该是 $dom -> 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->saveHTML()
你需要saveHTMLFile()
那么echo $dom->saveHTMLFile()
?如果是这样,它没有工作。它不会给出错误
最后一个问题:如果我运行这个 PHP 脚本,它会弄乱我的 HTML 文件的布局,我该如何避免这种情况?以上是关于使用 PHP 将 HTML 代码添加到现有的 HTML 文件的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 jQuery 将 JavaScript 代码添加到现有的 iFrame 中?