如何用 PHP 编写 PHP 代码?我想做这个,但行不通:
<?php echo '<?php echo \'aoeu\'; ?>'; ?>
希望有人能给我提示,
非常感谢
<?php echo htmlentities('<?php echo \'aoeu\'; ?>'); ?>
如果你输出一些复杂的代码,一定要使用像 smarty 这样的模板引擎..否则你的代码会看起来一团糟。
我曾经修补过 propel ORM,它在不使用模板引擎的情况下输出 PHP 代码。它根据 XML 配置文件生成所有模型类。他们的代码一团糟。别这样做。
试试这个
<<< is Heredoc
<?php
echo <<< EOF
<?php
echo <<< EOF
EOF;
?>
EOF;
?>
<?php echo '<?php echo \'aoeu\'; ?>'; ?>
如果您不转义“<' and '>”,它们将被打印为 html 标签。
你可以使用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"));
?>
看看nowdoc
您需要做的就是转义字符串。你已经做对了。当然,除非您要输出 HTML,否则请使用 htmlspecialchars()。
<?php echo htmlspecialchars('<?php echo \'aoeu\'; ?>'); ?>
我假设您正在尝试显示
<?php ?>
标签?如果是这样,只需使用 <
而不是 <
这不能直接按照您发布的方式完成。
PHP 是一种服务器端脚本语言,我相信您知道。这意味着它在页面显示给用户之前执行。
实际上,您的代码将文本写入浏览器,而不是服务器。执行其他 php 代码生成的 php 代码的唯一方法是将新代码写入文件,然后在页面加载后运行该文件。
示例1
<?php echo '<pre>', highlight_string('<?php
include($_SERVER["DOCUMENT_ROOT"] . "/myclass/myform.php");
?>', true), '</pre>'; ?>
示例2
请参阅 php 手册高亮字符串
我不确定 php 引擎需要什么(我会用其他发帖者的话说 htmlentities 可以工作),但是在最后使用 vim ?> 会让它看起来像 php 代码部分已经结束。
我只是这样做:
string = "<? echo somefunc('strparam'); ?" . ">";
编辑很高兴。如果有更好的方法,请告诉我!
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>';
作为这里许多答案的总结,您可以通过将所有特殊字符更改为相应的 html 特殊代码来
echo
o print
php 和 html 代码。至少字符串中的所有“<”字符都应转换为“<”。有很多方法可以做到这一点:
echo htmlspecialchars("<b>\"á'");
>> <b>"á'
这会转换回显代码所需的所有字符。
echo htmlentities("<b>\"á'");
>> <b>"á'
这与
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
大家好,希望你们能喜欢啊哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈