我对include()
(以及所有相关的)函数的行为感到有点困惑。如果我有一个文件library.php
,其中包含一些代码(在我的例子中,是一个数组):
<?php
$exampleArray = array(
"Item1" => "Item 1 description",
"Item2" => "Item 2 description"
);
?>
我希望能够在另一个文件(index.php
)中访问该数组,然后在index.php
我需要执行require_once('library.php');
。如果我没有PHP标记,则回显代码。但是,this comment on the PHP site表示,无论是否包含标记,如果包含文件的标题被修改,内容都将被回显。
library.txt
,但仍然包含PHP标记,则内容不会被回显(尽管在两种情况下我都意识到内容类型几乎肯定是text/plain
)< / LI>
答案 0 :(得分:2)
那么为什么不将它与<?php
标签保持一致?到目前为止,我已经测试过,没有标签的任何内容都不会被解析为PHP。 IIRC,PHP标记中的任何内容都会被PHP解析,因此您需要PHP的这些标记来解析所包含文件中的内容。
<?php
require_once("test.txt");
echo $exampleArray["Item1"];
?>
没有<?php
标签返回
$exampleArray = array( "Item1" => "Item 1 description", "Item2" => "Item 2 description" );
如果我使用require_once("test.php");
,则在文件中没有<?php
标记仍会向我提供未解析的内容。
所以你需要标签才能让它发挥作用。
http://meowman.sytes.net/so/incfile/tag.php和http://meowman.sytes.net/so/incfile/test.php显示包含文件包含标记时的回声。
http://meowman.sytes.net/so/incfile/notag.php和http://meowman.sytes.net/so/incfile/testno.php显示包含文件没有标记时的回声。
答案 1 :(得分:0)
始终 - 始终是 - 使用要包含的PHP文件中的开始标记。 (虽然不一定需要关闭标签)。
如果你不使用php开放标签,那些只是通过HTTP请求文件的用户也可以看到内容,因此用户可以看到源代码,因为代码实际上并没有被PHP解释器,但只是作为纯文本回显。