我想生成一个包含HTML和一些php命令的php页面。问题是当我提交下面的代码时,我得到了这个输出
<?php echo '$stfromyearErr '?><?php echo '$stfrommonthErr '?><?php echo '$stfromdayErr '?> <?php echo '$sttoyearErr '?><?php echo '$sttomonthErr '?><?php echo '$sttodayErr '?>
而不是php命令。我该如何解决?? 谢谢!
<?php
$page = "<html lang='en'> <head> <meta charset='utf-8' /> </head>
<body><table width='990' border='0' align='center'><tr><td width='54%' colspan='2'>
<span class='error'><?php echo '\$stfromyearErr ';?><?php echo '\$stfrommonthErr
';?><?php echo '\$stfromdayErr ';?> <?php echo '\$sttoyearErr ';?
><?php echo '\$sttomonthErr ';?><?php echo '\$sttodayErr ';?></span></td>
</tr></table> </body></html>";
echo $page;
?>
答案 0 :(得分:1)
您将PHP标记回显为<?php
,然后可能会在浏览器中显示该标记。它会像浏览器中的php代码一样 LOOK ,因为浏览器会将<
呈现为<
,但它不是PHP代码。这只是一些文字。
PHP不是递归可执行的,例如。
<?php
echo "<?php echo 'foo '; ?>";
?>
会回显<
,?
,p
等......而不只是foo
。
你可以做像
这样的事情<?php
$foo = "<?php echo 'hello world!'; ?>";
file_put_contents('hello.php', $foo);
?>
没有任何问题。只要您生成的文件实际上由PHP执行(例如,不要将其命名为“hello.html”),那么PHP将不知道(或者甚至不关心)该脚本是由某些其他php代码生成的。 / p>
答案 1 :(得分:0)
您将变量封装在单引号中,因此它们以纯文本形式输出,只需删除任何echo语句上的逗号即可解决此问题。
<?php echo $stfromyearErr; ?>
答案 2 :(得分:0)
如果要输出包含标记甚至语法突出显示的PHP代码,可以使用函数highlight_string()
。 Documentation here
<?php
highlight_string("<?php echo '$stfromyearErr '?><?php echo '$stfrommonthErr '?><?php echo '$stfromdayErr '?> <?php echo '$sttoyearErr '?><?php echo '$sttomonthErr '?><?php echo '$sttodayErr '?>");
?>
答案 3 :(得分:0)
有两件事,首先删除引号:
<?php
$page = "<html lang='en'> <head> <meta charset='utf-8' /> </head>
<body><table width='990' border='1' align='center'><tr><td width='54%' colspan='2'>
<span class='error'><?php echo $stfromyearErr ?><?php echo $stfrommonthErr
?><?php echo $stfromdayErr ?> <?php echo $sttoyearErr ?
><?php echo $sttomonthErr ?><?php echo $sttodayErr ?></span></td>
</tr></table> </body></html>";
echo $page;
?>
但是,这会给你:
<?php echo your_var_1 ?><?php echo your_var_2 ?><?php echo your_var_3 ?> <?php echo your_var_4 ? ><?php echo your_var_5 ?><?php echo your_var_6 ?>
这是因为php标签是多余的:你已经启动了php并在php中回应这些。
如果这是不可避免的,请尝试将其替换为:
echo str_replace(" ?>", "", str_replace("<?php echo", "", $page));