我正计划创建一个简单的脚本,允许PHP用户中没有经验的人为一个视频游戏创建代码文件。我有两个文件,“code.txt”和“exec.php”。第一个文件如下所示:
getglobal_move_call("TurnTarget")
getglobal_move_loadk_call("GenerateCSM", "15")
并且“exec.php”创建一个“temp.php”,用于导入用户制作的文件。它充满了“str_replace”函数,结果看起来像这样:
<?
$temp_line = "TurnTarget(param1)";
file_put_contents($generated_output, $temp_line, FILE_APPEND);
$temp_line = "GenerateCSM(param1, 15)";
file_put_contents($generated_output, $temp_line, FILE_APPEND);
?>
但是,当我在这些替换后回复我的代码时,我得到了这个:
<?
= "TurnTarget(param1)";
file_put_contents(User/Apple/Sites/Generate/Generated.txt, , FILE_APPEND);
= "GenerateCSM(param1, 15)";
file_put_contents(User/Apple/Sites/Generate/Generated.txt, , FILE_APPEND);
?>
如您所见,str_replace删除了所有变量。有解决方案吗?
答案 0 :(得分:1)
这是因为您在代码中使用了""
,并且PHP将$temp_line
替换为它的实际值(null,因为没有这样的var)。
要回复PHP代码,请使用$
\
$code = <<< PHP
\$temp_line = "TurnTarget(param1)";
file_put_contents(\$generated_output, \$temp_line, FILE_APPEND);
\$temp_line = "GenerateCSM(param1, 15)";
file_put_contents(\$generated_output, \$temp_line, FILE_APPEND);
PHP;
echo $code;
答案 1 :(得分:0)
通过分隔“$”符号和变量名称来解决问题。
str_replace("templine", "$"."templine", $code);