在php中我写:
$name = $row['first_name'];
$welcomeblock = file_get_contents('./blocks/profile/welcome.min', true);
require_once('./blocks/profile/profile.min');
会发生什么是 profile.min 显示,其中以下代码:
<div class="frame">
<?php
echo $welcomeblock;
?>
</div>
即读取一个php变量,通过html显示。在这里一切都好。接下来,从welcome.min 文件中读取welcomeblock,其中:
<div id = "startpage">
Здравствуйте, <?php echo $name; ?>!<br>
Выберите пункт в меню
</div>
在这里,在你好之后,这个地方什么都没有显示,尽管 php 接收到一个非空的名称。怎么做才能让名字仍然显示?一切都与以这种方式获得的任何其他变量相同:一个变量从 php 到一个从 php 加载到通用代码中的代码块
在这里,最有可能的是,您获得了welcome.min 的内容,与profile.min 不同,它不包含在可执行脚本中,因此不被解释器执行。我可能不准确,但据我所知,当您包含一个带有要求的文件时,它就会成为脚本的一部分。也就是说,这与将
require_once('./blocks/profile/profile.min')这个文件的内容插入到该行的位置相同,因此,对于与 help 连接的文件,require_once将执行所有 php 指令。在我看来,这个问题可以通过以下方式解决:1)在文件中,你使用file_get_contents获取的内容,而不是php指令,使用一些关键字(例如,{name}),意思是变量,然后可以将其替换为这些相同变量的值使用str_replace 函数。
2)使用相同的require或include包含welcome.min文件,但在包含它之前使用它,这样当文件被包含
ob_start();时,将提供给它们的所有内容都不会输出,而是使用以下函数作为字符串ob_get_clean();返回应该在之后调用。