如何在浏览器中的HTML页面上显示PHP代码? [重复]

问题描述 投票:0回答:14

如何用 PHP 编写 PHP 代码?我想做这个,但行不通:

<?php echo '<?php echo \'aoeu\'; ?>'; ?>

希望有人能给我提示,

非常感谢

php echo
14个回答
12
投票
<?php echo htmlentities('<?php echo \'aoeu\'; ?>'); ?>

3
投票

如果你输出一些复杂的代码,一定要使用像 smarty 这样的模板引擎..否则你的代码会看起来一团糟。

我曾经修补过 propel ORM,它在不使用模板引擎的情况下输出 PHP 代码。它根据 XML 配置文件生成所有模型类。他们的代码一团糟。别这样做。


2
投票

试试这个

<<< is Heredoc

<?php

echo <<< EOF

<?php
echo <<< EOF
EOF;
?>

EOF;

?>

2
投票
<?php echo '&lt;?php echo \'aoeu\'; ?&gt;'; ?>

如果您不转义“<' and '>”,它们将被打印为 html 标签。


2
投票

你可以使用highlight_string或highlight_file,如果你使用highligh_file,你必须指出你想要显示的php文件

<?php
highlight_string('<?php echo\'hello\' ?>');
highlight_file("D:\local\ajax_bottom.php");
?>

或者您可以将两者结合起来,这对我来说是最好的解决方案:

<?php

$string=highlight_file("D:\local\hatirlaticilar\Adminn\autocomplete\gethint.php");
highlight_string("$string");
?>

或者你可以用不同的方式组合:

<?php


highlight_string(highlight_file("D:\local\hatirlaticilar\Adminn\autocomplete\gethint.php"));
?>

0
投票

您需要做的就是转义字符串。你已经做对了。当然,除非您要输出 HTML,否则请使用 htmlspecialchars()


0
投票
<?php echo htmlspecialchars('<?php echo \'aoeu\'; ?>'); ?> 

http://sandbox.phpcode.eu/g/b1316.php


0
投票

我假设您正在尝试显示

<?php ?>
标签?如果是这样,只需使用
&lt
而不是
<


0
投票

这不能直接按照您发布的方式完成。

PHP 是一种服务器端脚本语言,我相信您知道。这意味着它在页面显示给用户之前执行。

实际上,您的代码将文本写入浏览器,而不是服务器。执行其他 php 代码生成的 php 代码的唯一方法是将新代码写入文件,然后在页面加载后运行该文件。


0
投票

示例1

<?php       echo '<pre>', highlight_string('<?php
include($_SERVER["DOCUMENT_ROOT"] . "/myclass/myform.php");
?>', true), '</pre>';       ?>

示例2
请参阅 php 手册高亮字符串


0
投票

我不确定 php 引擎需要什么(我会采用其他发帖者的话来表示 htmlentities 可以工作),但是在最后使用 vim ?> 会让它看起来像是 php 代码部分已经结束。

我只是这样做:

string = "<? echo somefunc('strparam'); ?" . ">";

编辑很高兴。如果有更好的方法,请告诉我!


0
投票

作为这里许多答案的总结,您可以通过将所有特殊字符更改为相应的 html 特殊代码来

echo
o
print
php 和 html 代码。至少字符串中的所有“<”字符都应转换为“<”。有很多方法可以做到这一点:

echo htmlspecialchars("<b>\"á'");
>> &lt;b&gt;&quot;á'

这会转换回显代码所需的所有字符。

echo htmlentities("<b>\"á'");
>> &lt;b&gt;&quot;&aacute;'

这与

htmlspecialchars
相同,但也会转换具有相应 html 代码的所有字符。

值得注意的是

single
double quotes
具有不同的行为,因为
single quotes
不会解释其中的变量,也不会读取转义字符(单引号本身除外)。

$foo = "value";

echo "I replace $foo with value and \n with line break";
>> I replace value with value and 
   with line break

echo 'I don\'t replace $foo with value nor \n with line break';
>> I don't replace $foo with value nor \n with line break

您也可以使用 heredoc 语法,它与

double-quoted
字符串相同,但不需要在字符串内转义它们

echo <<<EOF
Your "string' here
EOF;

nowdoc 语法相同,但模仿

single-quoted
字符串

echo <<<'EOF'
Your "string' here
EOF;

您可以在这里阅读所有相关内容: https://www.php.net/manual/es/language.types.string.php


0
投票

在您的情况下,您应该使用 htmlspecialchars 而不是 htmlentities - htmlspecialchars 只是更轻 - htmlspecialchars 只会将特殊字符(可能会导致 HTML 呈现问题)转换为其等效的 HTML 实体,例如 >,<, single/double quotes.

htmlspecialchars 将转换具有等效 HTML 实体的所有字符,例如 á、é 等...

两者都可以,而懒惰(低效)的决定是始终使用 htmlentities,而不考虑代码的上下文。


-1
投票
 echo '<div class="row"><div class="col-md-6 col-md-offset-3"><div class="alert alert-success" role="alert"><p style="text-align: center;">'. php code goes here .'</p></div></div></div>';
© www.soinside.com 2019 - 2024. All rights reserved.