我该如何将 PHP 代码放入字符串中?
$phpCode = '<? if($condtion){ ?>';
由于某些原因,当我执行此操作并回显代码时,我没有得到PHP起始标签<?
。我是否遗漏了什么?是否有更好或更适当的方法来完成这个操作?我目前正在查看关于字符串的PHP文档,但我希望得到您的反馈。
编辑:我使用单引号('
)而不是双引号("
)的原因是因为我不希望代码填充条件的值。我希望它按原样回显。htmlspecialchars()
不应该足够转义吗?转义所有实体有点过头了。 - grossvogel$phpCode = htmlspecialchars('<? if($condition){ ?>');
- Chris Bierecho htmlspecialchars($phpCode);
。尝试这个 $str= htmlentities('<?php //***code***// ?>');
您也可以使用HTML实体。
当您在PHP中仅替换左方括号时,其余部分将被视为字符串并在echo解析时输出:
<?php
//< is the HTML entity for '<' (without quotes).
$str = '<?php yourstring ?>';
echo $str;
?>
源代码 HTML 实体
这个问题已经有了几个答案,但是我也想加上我的看法...
这段代码:
<?php
$test = '<?php echo "hello world!"; ?>';
echo $test;
?>
在浏览器中会产生一个空白的白屏,但如果您查看源代码,您将看到以下输出:
<?php echo "hello world!"; ?>
这与浏览器呈现您的PHP代码的方式有关。 浏览器不是用来呈现PHP代码的,而是用来呈现HTML标记的。 如果您正在回显代码,因为您正在测试将要写入文件的内容,则只需查看源代码以验证输出的内容是否是您想要写入文件的内容。 您在浏览器本身中看不到它,因为它不知道如何呈现?php
标记,更不用说如何处理echo
属性了。
作为可选项,就像每个人已经说明的那样,如果您只想在浏览器中呈现字符串而无需查看源代码,则可以通过htmlspecialchars
传递字符串。 如果您要将其写入文件,则不应该这样做,但可能会帮助您调试输出。
另一个选择是从命令行运行脚本。 它不会尝试呈现您的输出,而是直接原样输出。
您可以通过以下方式将 PHP 代码输出为文本
$phpCode = '<? if($condtion){ ?>';
echo "<pre>";
echo htmlspecialchars($phpCode);
echo "</pre>";
如果你想要运行字符串中的代码,可以使用Eval()
。
例子
$str = "Hello ";
eval('$str .= "World"');
echo $str;
/* Output: Hello World */
eval()
可以做什么。 - S.Vissereval
会立即执行字符串,而不是在以后的时间。OP想要在文件中使用您提供的示例$str = "Hello "; $str .= "World";
,而不是Hello World
。 - Jeff Lambert
htmlspecialchars
的答案适用于在网页中显示字符串,但不适用于计划实际运行生成代码的情况。在这种情况下,您应该毫无问题地像使用file_put_contents
一样将字符串写为原样。但是,我会认真质疑使用 PHP 脚本编写 PHP 代码是否是一个好的总体策略。 - grossvogelfile_put_contents('/file/path', $phpCode);
,你会得到包括开始标签在内的代码,并将其写入/file/path
。我认为更大的问题在于为什么你要通过运行其他 PHP 脚本来构建 PHP 脚本。 - grossvogel