如何在 fwrite() 中编写 PHP 代码?
您好,在我的代码中,我想使用 php: fwrite() 创建一个新的 .php 文件。 如何在 fwrite() - 函数中编写 PHP。我以前的尝试以错误结束,因为 PHP 代码已执行,而不是在创建的文件 ($fp) 中“写入”。
这是我的代码:
$fp=fopen('../blogs/'.$url.'.php','w');
fwrite($fp, "
<p>This is a paragraph</p>
<?php
$conn = mysqli_connect('server', 'username', 'password', 'database');
if(!$conn){
echo '<h3 class='container bg-dark p-3 text-center text-warning rounded-lg mt-5'>Not able to establish Database Connection<h3>';
}
// Get data to display on index page
$sql = 'SELECT * FROM blog WHERE id = $id';
$result = $conn->query($sql);
while($row = $result_->fetch_assoc()){
$content = $row['content'];
echo $content;
" ?>
我可以在写入的文件中使用 $var 显示变量。但是我如何在 $fp - 文件中写入 php 代码而不执行它呢?
感谢您的帮助:)
正如您在该站点上的语法高亮显示所见,生成的字符串中的所有变量(例如
$conn
、$sql
)都被 PHP 理解为字符串中的变量。当 PHP 运行您的代码时,字符串中的这些变量将被expanded(即替换为实际值)beforefwrite()运行。
您可以检查您的输出 PHP 文件来验证。所有的变量都被无意义的替换或干脆消失了。你想要做的是让变量名保持原样(带有美元符号和所有)并写入文件。
当用双引号或 heredoc 指定字符串时,会在其中解析变量。
语法有两种:简单的和复杂的。简单的语法是最常见和方便的。它提供了一种以最小的努力在字符串中嵌入变量、数组值或对象属性的方法。
复杂的语法可以通过表达式周围的大括号来识别。
有两种方法可以解决这个问题:
$
替换\$
)。'
替换为 \'
)以防止意外结束字符串引号。您生成的代码还有更多问题(例如
class
属性使用单引号,这也结束了您的单引号字符串并导致生成代码中的语法错误)。但是,如果我为您修复所有代码,我会让这个网站成为免费的代码编写服务,但事实并非如此。
要进一步调试,只需打开生成的 PHP 文件并检查它有什么语法错误。您可以使用支持语法检查的编辑器(例如 VSCode 和 PHP Intelephence。或者您可以简单地使用
php -l <filename>
。通过调整生成它的方式来一一修复它们。
你在做什么并不常见,正如其他人所说,我建议你四处寻找更综合的现成解决方案。
无论如何,问题是您使用的双引号会导致变量的意外扩展。
为避免这种情况,您可以简单地将正在编写的主PHP 代码字符串 中的单引号换成双引号。
$sql = 'SELECT * FROM blog WHERE id = $id';
行也需要这种做法(它必须变成 $sql = "SELECT * FROM blog WHERE id = $id";
)——虽然不清楚 $id 变量从哪里来。
你的包含代码的字符串似乎被截断了