使用 PHP 将内容添加到 PHP 文件/使用 PHP 编辑 PHP 文件
Add content to PHP file with PHP / edit PHP file with PHP
我正在构建自己的 CMS 系统,我想从模板动态创建新页面。就像在 wordpress 中添加新页面时一样。
这是模板:
<?php require_once('backend-nav.php');?>
<div id="main">
<div id="main-content" class="xlarge">
<article id="article-wrapper">
// My content needs to go here!
</article>
<?php require_once('backend-sidebar.php')?>
</div>
</div><!-- End main content container -->
<?php require_once('backend-footer.php')?>
<?php } else {
echo '<div class="container">You have to be logged in to view this page:.
'<ahref="login.php">Login</a>'.'</div>';
}
?>
我制作了一个表单来提交页面上我想要的内容,然后使用下面的代码打开模板 php 文件并将其作为内容保存在服务器上的新文件对于页面
$doc = new DOMDocument();
$doc->loadHTMLFile("new_page.php");
$article = $doc->getElementById('article-wrapper');
$p = $doc->createElement('p');
$addP = $article->appendChild($p);
$content = $doc->createTextNode($page_content);
$addP->appendChild($content);
// the url for the page is also submitted to the form and later added to the menu, which works.
$doc->saveHTMLFile($page_url.'.php');
因为没有 loadPHP 函数,所以我会使用这个函数。将 link 添加到我的主菜单时它也对我有用,这也是一个 PHP 文件。
现在内容被添加到文件中,并相应地保存了,但由于某种原因,它在某些地方搞砸了代码,比如这样,一些符号被替换了,比如 ?和 > 等:
require_once('backend-header.php');
?>
<?php if (isset($_COOKIE['username'])) { ?>
<?php require_once('backend-nav.php');?>
<html>
<body>
<div id="main">
<div id="main-content" class="xlarge">
<article id="article-wrapper">
<p>test content added in p tags</p></article>
<?php require_once('backend-sidebar.php')?> </div><!-- End main content container -->
</div>
<?php require_once('backend-footer.php')?><?php } else {
echo '<div class="container">You have to be logged in to view this page: ' .
'<a href="login.php">Login</a>'.'';
}?></body></html>
替换html结束标签之前的PHP结束标签
我也曾尝试 fread/write 更改文件,但我可能没有以正确的方式使用它们。
有没有一种方法可以使用 php 将代码添加到 php 文件,或者有其他方法来实现我想要做的事情?
谢谢!
DOMDocument 只用来读取XML 和HTML,它们有一个结构。当您将 PHP 代码插入 html 文件时,它不再是真正的 html。让我们看下面的例子。
html代码:
<a>text</a>
有一个名为 "a" 的节点有内容。 DOMDocument 可以很好地理解它。
但是
<a><?php if (false) : ?>true</a><? else: ?>false</a><?php endif ?>
DOMDocument 无法理解 php,它将读取第一个 作为 的较近者。第二个怎么样,reader 可能会尝试通过修复它来阅读,或者只是忽略它或附加一些东西使它变得结构化。所以,在这种情况下你不能使用 DOMDocument。您可以尝试使用 file_get_contents 并替换内容,然后使用 file_put_contents 将其写回。
我正在构建自己的 CMS 系统,我想从模板动态创建新页面。就像在 wordpress 中添加新页面时一样。
这是模板:
<?php require_once('backend-nav.php');?>
<div id="main">
<div id="main-content" class="xlarge">
<article id="article-wrapper">
// My content needs to go here!
</article>
<?php require_once('backend-sidebar.php')?>
</div>
</div><!-- End main content container -->
<?php require_once('backend-footer.php')?>
<?php } else {
echo '<div class="container">You have to be logged in to view this page:.
'<ahref="login.php">Login</a>'.'</div>';
}
?>
我制作了一个表单来提交页面上我想要的内容,然后使用下面的代码打开模板 php 文件并将其作为内容保存在服务器上的新文件对于页面
$doc = new DOMDocument();
$doc->loadHTMLFile("new_page.php");
$article = $doc->getElementById('article-wrapper');
$p = $doc->createElement('p');
$addP = $article->appendChild($p);
$content = $doc->createTextNode($page_content);
$addP->appendChild($content);
// the url for the page is also submitted to the form and later added to the menu, which works.
$doc->saveHTMLFile($page_url.'.php');
因为没有 loadPHP 函数,所以我会使用这个函数。将 link 添加到我的主菜单时它也对我有用,这也是一个 PHP 文件。
现在内容被添加到文件中,并相应地保存了,但由于某种原因,它在某些地方搞砸了代码,比如这样,一些符号被替换了,比如 ?和 > 等:
require_once('backend-header.php');
?>
<?php if (isset($_COOKIE['username'])) { ?>
<?php require_once('backend-nav.php');?>
<html>
<body>
<div id="main">
<div id="main-content" class="xlarge">
<article id="article-wrapper">
<p>test content added in p tags</p></article>
<?php require_once('backend-sidebar.php')?> </div><!-- End main content container -->
</div>
<?php require_once('backend-footer.php')?><?php } else {
echo '<div class="container">You have to be logged in to view this page: ' .
'<a href="login.php">Login</a>'.'';
}?></body></html>
替换html结束标签之前的PHP结束标签 我也曾尝试 fread/write 更改文件,但我可能没有以正确的方式使用它们。
有没有一种方法可以使用 php 将代码添加到 php 文件,或者有其他方法来实现我想要做的事情?
谢谢!
DOMDocument 只用来读取XML 和HTML,它们有一个结构。当您将 PHP 代码插入 html 文件时,它不再是真正的 html。让我们看下面的例子。
html代码:
<a>text</a>
有一个名为 "a" 的节点有内容。 DOMDocument 可以很好地理解它。 但是
<a><?php if (false) : ?>true</a><? else: ?>false</a><?php endif ?>
DOMDocument 无法理解 php,它将读取第一个 作为 的较近者。第二个怎么样,reader 可能会尝试通过修复它来阅读,或者只是忽略它或附加一些东西使它变得结构化。所以,在这种情况下你不能使用 DOMDocument。您可以尝试使用 file_get_contents 并替换内容,然后使用 file_put_contents 将其写回。