是否有可能使某些文件中的php代码不需要开始/结束标签(<?php ?>
)?
代码应默认解释为php。
我知道可以省略结束标记(?>
)。
是否有可能使某些文件中的php代码不需要开始/结束标签(<?php ?>
)?
代码应默认解释为php。
我知道可以省略结束标记(?>
)。
-r
选项而不必使用脚本标签。摘自man php
:
-r code Run PHP code without using script tags ’<?..?>’
现在你可以按以下方式调用你的脚本:php -r "$(cat foo.php)"
php -r 'echo "Hello World!\n";'
总是会抛出错误 PHP Parse error: syntax error, unexpected ''echo' (T_ENCAPSED_AND_WHITESPACE), expecting end of file in Command line code on line 1
? - Vicky Dev不可以。解释器需要标签以了解哪些内容需要解析,哪些内容无需解析。
php_info();
<?
// file_contents returns a string, which can be processed by eval()
eval(file_get_contents('/path/to/file/'.urldecode($_GET['fakefile'])));
?>
RewrieEngine On
RewriteRule ^(.*)$ realfile.php?fakefile=$1 [QSA]
然而,如果我没记错的话,你的处理速度会慢一些,并且使用eval
运行的代码有一些问题,如何处理$GLOBALS
、$_SERVER
、$_POST
、$_GET
和其他变量。你需要创建一个全局变量来将这些超级全局变量传递到你评估的代码中。
例如:
<?
global $passed_post = $_POST;
// only by converting $_POST into a global variable can it be understood by eval'ed code.
eval("global $passed_post;\n print_r($passed_post);");
?>
您可以将 PHP 代码存储在文件或数据库中(不包括 <?php ?>
),然后使用 eval()
激活它。请注意,代码的执行速度会变慢。以下是一个 eval()
示例:
// Data layer (array, database or whatever).
$arr = array("a","b","c");
// Code layer - hint: you can get the code from a file using file_get_contents().
$str = 'foreach($arr as $v) { echo $v . " "; }';
// Shake + Bake
eval($str);
结果:a b c